比赛描述
根据题目A的问题描述*,我们知道2013“华为杯”南京邮电大学大学生团体歌唱大赛要求每个参赛团体由3名同一年级在校学生选手组成,各位同学踊跃报名,赛事组委会收到大量参赛团体信息,包括每一个团体选手姓名、学号、年级、联系方式等。因最近流感来袭,大赛组委会根据选手建议,决定将赛事推迟到秋季。该项决定带来的问题是:参赛团体的年级信息需要更新,其中本科或硕士毕业参赛选手所在团队的信息需要做额外处理。
我们将问题进行简化,从1开始按递增顺序给每一个参赛团体分配一个整数编号,大学一年级至四年级的信息依次用0、1、2、3表示,硕士研究生一年级至三年级的信息依次用4、5、6表示,给定参赛团体的年级信息,请你输出更新后的年级信息。
对于本科或硕士已毕业选手所在参赛团队,如果原参赛团体是本科生且没有一个选手在南邮继续读研究生,则该参赛团体无效,其年级信息要删除而无需输出;如果原参赛团体是本科生且至少有一个选手继续在南邮读研究生,允许这些在校选手继续参赛(允许团队少于3人),年级信息更新为硕士研究生一年级;如果原参赛团体是硕士生,则该参赛团体无效,其年级信息要删除而无需输出。这里我们规定,参赛团体每位选手都正常升级或毕业。
输入
输入包括多个测试用例,首先给出测试用例数N,接着给出N个测试用例。
每一个测试用例包括多行,首先第1行分别给出参赛团体总数M、本科将毕业且有选手继续读研的参赛团队数C;如果C≠0,则在接下来的1行中分别给出C个本科将毕业且会有选手继续读研的参赛团队编号;后续输入M行,每行分别给出参赛团体的编号和年级信息。
这里,1≤N≤1000,1≤M≤1000,1≤C≤1000。输出
对于每个测试用例,输出多行,每1行依次输出有效的参赛团体编号、更新后的年级信息。
样例输入
2
6 2
2 6
1 0
2 3
3 4
4 3
5 6
6 3
4 0
1 0
2 0
3 6
4 6
样例输出
1 1
2 4
3 5
6 4
1 1
2 1
提示
*南邮2013年《ACM程序设计基础》课程实验赛(二)题目A
题目来源
SED
/* Wrong Answer at Test 1 #include<iostream> #define MAX_N 1001 bool b[MAX_N]; int main(){ // freopen("test.txt","r",stdin); int t,n,c,i,temp; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&c); while(c--){ // getchar(); // i = getchar()-'0'; scanf("%d",&i); b[i] = 1; } for(i=1;i<=n;i++){ getchar(); getchar(); getchar(); temp = getchar()-'0'+1; // printf("%d\n",a[i]); if(b[i]){ b[i] = 0; if(temp==4){ // putchar(i+'0'); // putchar(' '); // putchar(temp+'0'); // putchar('\n'); printf("%d %d\n",i,temp); } }else{ if(temp!=4 && temp!=7){ // putchar(i+'0'); // putchar(' '); // putchar(temp+'0'); // putchar('\n'); printf("%d %d\n",i,temp); } } } } } */ /* 718MS #include<iostream> #define MAX_N 1001 int id[MAX_N]; bool b[MAX_N]; int main(){ // freopen("test.txt","r",stdin); int t,n,c,i,temp; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&c); while(c--){ // getchar(); // i = getchar()-'0'; scanf("%d",&i); b[i] = 1; } for(i=1;i<=n;i++){ // getchar(); // getchar(); // getchar(); // temp = getchar()-'0'+1; scanf("%d%d",id+i,&temp); temp++; // printf("%d\n",a[i]); if(b[i]){ b[i] = 0; if(temp==4){ // putchar(i+'0'); // putchar(' '); // putchar(temp+'0'); // putchar('\n'); printf("%d %d\n",i,temp); } }else{ if(temp!=4 && temp!=7){ // putchar(i+'0'); // putchar(' '); // putchar(temp+'0'); // putchar('\n'); printf("%d %d\n",id[i],temp); } } } } } */ // 317MS #include<iostream> #define MAX_N 1001 int id[MAX_N]; bool b[MAX_N]; int main(){ // freopen("test.txt","r",stdin); int t,n,c,i,temp; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&c); while(c--){ while((temp=getchar())<'0' || temp>'9'); i = temp-'0'; while((temp=getchar())>='0' && temp<='9'){ i = i*10+temp-'0'; } // scanf("%d",&i); b[i] = 1; } for(i=1;i<=n;i++){ while((temp=getchar())<'0' || temp>'9'); id[i] = temp-'0'; while((temp=getchar())>='0' && temp<='9'){ id[i] = id[i]*10+temp-'0'; } temp = getchar()-'0'+1; // scanf("%d%d",id+i,&temp); if(b[i]){ b[i] = 0; if(temp==4){ // putchar(i+'0'); // putchar(' '); // putchar(temp+'0'); // putchar('\n'); printf("%d %d\n",i,temp); } }else{ if(temp!=4 && temp!=7){ // putchar(i+'0'); // putchar(' '); // putchar(temp+'0'); // putchar('\n'); printf("%d %d\n",id[i],temp); } } } } }