Codeforces Gym100814 B.Unlucky Teacher (ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015) Arab Academy for Science and Technology)

 

今日份的训练题解,今天写出来的题没有昨天多,可能是因为有些事吧。。。

 

 

这个题就是老师改卷子,忘带标准答案了,但是他改了一部分卷子,并且确定自己改的卷子没出错,他想从改过的卷子里把标准答案推出来。

因为是选择题,答案就是A,B,C,D里的一个,如果A,B,C,都不对,那就是D对。如果不确定就是?,就是这样的题目。

一开始写的忘记判断如果三个选项都不对,那么剩下的就是答案这个了。。。

代码写的很丑,想不到简单的写法。。。

 

代码:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 using namespace std;
 6 const int N=200+10;
 7 struct node{
 8     char ans;
 9     char pd;
10     char t[5];
11 }s[N];
12 char da[N];
13 int main(){
14     int t,n,m;
15     scanf("%d",&t);
16     while(t--){
17         scanf("%d%d",&n,&m);
18         memset(da,'?',sizeof(da));
19         for(int i=0;i<n;i++){
20             for(int j=0;j<4;j++){
21                 if(j==0)s[i].t[j]='A';
22                 if(j==1)s[i].t[j]='B';
23                 if(j==2)s[i].t[j]='C';
24                 if(j==3)s[i].t[j]='D';
25             }
26         }
27         while(m--){
28             for(int i=0;i<n;i++){
29                 cin>>s[i].ans>>s[i].pd;
30                 if(s[i].pd=='T'&&da[i]=='?')da[i]=s[i].ans;
31                 if(s[i].pd=='F'&&s[i].ans=='A')s[i].t[0]='0';
32                 if(s[i].pd=='F'&&s[i].ans=='B')s[i].t[1]='0';
33                 if(s[i].pd=='F'&&s[i].ans=='C')s[i].t[2]='0';
34                 if(s[i].pd=='F'&&s[i].ans=='D')s[i].t[3]='0';
35             }
36         }
37         for(int i=0;i<n;i++){
38             int ret=0;char qwe='0';
39             for(int j=0;j<4;j++){
40                 if(s[i].t[j]=='0')ret++;
41                 if(s[i].t[j]!='0')qwe=s[i].t[j];
42             }
43             if(ret==3&&da[i]=='?')da[i]=qwe;
44         }
45         for(int i=0;i<n-1;i++)
46         printf("%c ",da[i]);
47         printf("%c\n",da[n-1]);
48     }
49     return 0;
50 }

 

posted @ 2018-01-15 21:12  ZERO-  阅读(611)  评论(0编辑  收藏  举报