代码改变世界

Sicily/1100. Tennis Anyone

2011-08-05 17:10  Min·zc  阅读(168)  评论(0编辑  收藏  举报
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
string player[2];
int score[2];//每一场game,二人各自的比分
int set[3][2];//每一场,二人赢得的game数
int wins[2];//二人赢得的set数
int win=0;//比赛的最后赢家
int cur=0;//记录当前用户的比分
int str=0;//发球人
int setn=0;//进行到的setn
int main()
{
        string cmd,tem1,tem2;
        while(cin>>cmd)
        {
                if(cmd=="quit")
                        break;
                else if(cmd=="done")
                {
                        cout<<player[0]<<"-"<<player[1]<<endl;
                        if(!(set[0][0]==0&&set[0][1]==0))
                                cout<<set[0][0]<<"-"<<set[0][1];
                        if(!(set[1][0]==0&&set[1][1]==0))
                                cout<<" "<<set[1][0]<<"-"<<set[1][1];
                        if(!(set[2][0]==0&&set[2][1]==0))
                                cout<<" "<<set[2][0]<<"-"<<set[2][1];
                        cout<<endl;
                        if(win==0)
                                cout<<"Match in progress"<<endl;
                        else
                                cout<<player[win-1]<<" won"<<endl;
                        cout<<endl;
                        for(int i=0;i<3;i++)
                                set[i][0]=set[i][1]=0;
                        score[1]=score[0]=0;
                        wins[0]=wins[1]=0;
                        str=0;
                        cur=0;
                        setn=0;
                        win=0;
                }
                else if(cmd=="game")
                {
                        if(score[0]>score[1])
                                set[setn][0]++;
                        else
                                set[setn][1]++;
                        if(fabs(set[setn][0]-set[setn][1])>=2)
                        {
                                if(set[setn][0]>set[setn][1]&&set[setn][0]>=6)
                                {
                                        setn++;
                                        wins[0]++;
                                }
                                else if(set[setn][1]>set[setn][0]&&set[setn][1]>=6)
                                {
                                        setn++;
                                        wins[1]++;
                                }
                        }
                        score[0]=score[1]=0;
                        if(wins[0]==2)
                                win=1;
                        else if(wins[1]==2)
                                win=2;
                        str=1-str;
                        cur=str;
                }
                else if(cmd=="ad-in")
                {
                        score[str]+=10;
                        cur=1-cur;
                }
                else if(cmd=="ad-out")
                {
                        score[1-str]+=10;
                        cur=1-cur;
                }
                else if(cmd=="deuce")
                {
                        score[0]=score[1];
                        cur=1-cur;
                }
                else if(cmd=="0"||cmd=="15"||cmd=="30"||cmd=="40")
                {
                        int s=0;
                        for(int i=0;i<cmd.size();i++)
                        {
                                s*=10;
                                s+=(cmd[i]-'0');
                        }
                        score[cur]=s;
                        cur=1-cur;
                }
                else
                {
                        player[cur]=cmd;
                        cur=1-cur;
                }
                
        }
}