A.九峰与签到题
题目链接:https://ac.nowcoder.com/acm/contest/9984/A
题目描述:
九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认为任意时间内通过率大于等于50%的题为签到题,现按照时间顺序给出整场比赛提交记录,请你输出哪些是签到题。
输入描述:
第一行输入两个整数m,n,表示提交记录个数和题目个数(m≤10^5,n≤20)
接下来m行,每行输入一个正整数ai 和一个字符串op,表示题目序号和评测结果(ai≤n,opϵ{‘‘AC",‘‘UNAC"})
输出描述:
从小到大输出签到题的序号,按空格分割。若没有则输出-1。
示例1:
输入
10 2
1 AC
2 AC
1 AC
1 UNAC
1 AC
2 AC
2 UNAC
1 UNAC
2 UNAC
1 UNAC
输出
1 2
备注:
一道题没有任何提交时通过率认为是100%
若没有提交记录则被视为非签到题
解题思路:
签到题计算通过率然后打印出来AC大于等于UNAC(通过率大于等于50%)的题号。
(啊被题目中的任意时间坑了很久emm…语文没学好实惨无比的一批…)
代码如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
using namespace std;
int cnt[10010],vis[10010];
int main(){
int m,n,a;
scanf("%d%d",&m,&n);
char op[20];
while(m--){
scanf("%d %s",&a,op);
if(op[0]=='A')cnt[a]++;
else cnt[a]--;
if(cnt[a]<0)
vis[a]=1;
}
for(int i=1;i<=n;i++)
if(!vis[i]){
printf("%d ",i);
}
return 0;
}