排球
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
排球,是永远向上看的运动!
《排球少年》
众所周知,排球的计分规则是这样的:
- 当一支队到 25 分并且领先 2 分及以上的时候获胜,若战成 24 分平,那么继续比赛,直到一队领先 2 分及以上时这一队获胜。
乌野和青城在县预赛中又遇上了,这场比赛是三局两胜制。请你当一回计分器,输出每局比赛的得分,并且在结束的时候输出哪一队获胜了。
Input
每一行,输入两个数 $$$opt, x$$$。$$$opt = 1$$$ 时表示青城连续拿下 $$$x$$$ 球,$$$opt = 2$$$ 时表示乌野连续拿下 $$$x$$$ 球。
当胜负已定时,停止读入。输入保证一定描述了一场合法的排球比赛,即比分不会出现异常的情况。
Output
前面 $$$2$$$ 或 $$$3$$$ 行,输出比分,青城在前,乌野在后。
在比赛结束后再输出一行,若青城获得大局胜利,输出 $$$1$$$,否则输出 $$$2$$$。
Examples
input
2 25 1 24 1 1 2 24 1 24 2 1 1 1 2 1 2 1
output
0:25 25:0 25:27 2
input
1 25 2 25 1 2 1 1 2 3 1 3 1 1 1 3 2 3 1 1 1 2 2 3 1 3 2 2 1 3 2 4 1 3 2 1 2 4 2 1 2 3 1 2 2 2
output
25:0 0:25 24:26 2
Note
Subtask 1 (50pts): 保证 $$$x=1$$$,即输入的每一行都只描述了一个球。
Subtask 2 (50pts): 输入行数保证小于 $$$1000$$$ 行。比分保证随时在 $$$1000$$$ 分的范围内。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{const pai[7]={0,2,1,1,1,2,2};//pai[i]为1表示位置i是在前排,为2表示在后排
int pos[7];
int ch1,ch2,ch3,ch4;
int A,B,C,D,E,F;
memset(pos,0,sizeof(pos));//每个位置上的队员初始化为0
for (A=1;A<=6;A++){//这里的A表示一号队员的场地,以后类似!
if(A==1) continue;
pos[A]=1;
for (B=1;B<=6;B++){
if(B==2||pos[B]!=0)
continue;
pos[B]=2;
for (C=1;C<=6;C++){
if(C==3||pos[C]!=0)
continue;
pos[C]=3;
for (D=1;D<=6;D++){
if(D==4||pos[D]!=0)
continue;
pos[D]=4;
for (E=1;E<=6;E++){
if(E==5||pos[E]!=0)
continue;
pos[E]=5;
F=21-A-B-C-D-E;
if(F==6)
continue;
pos[F]=6;
ch1=(pai[A]!=2)&&(pai[F]!=2); //1、6号不再后排;
ch2=(pos[2]!=2)&&(pos[2]!=3)&&(pos[5]!=2)&&(pos[5]!=3);//2、3号不是二传手;
ch3=(pai[C]!=pai[D]);//3、4号不在同一排;
ch4=(pos[3]!=5)&&(pos[3]!=6)&&(pos[6]!=5)&&(pos[6]!=6);//5、6号不是副攻手;
if (ch1+ch2+ch3+ch4==4)
{
cout<<"一号队员在"<<A<<"场地"<<endl;
cout<<"二号队员在"<<B<<"场地"<<endl;
cout<<"三号队员在"<<C<<"场地"<<endl;
cout <<"四号队员在"<<D<<"场地"<<endl;
cout <<"五号队员在"<<E<<"场地"<<endl;
cout<<"六号队员在"<<F<<"场地"<<endl;
}
pos[F]=0;
pos[E]=0;
}
pos[D]=0;
}
pos[C]=0;
}
pos[B]=0;
}pos[A]=0;
}
return 0;
}