我的代码未报告错误。但是,当在在线法官系统中运行时,有人告诉我它无法为某些特殊样品提供正确的答案。我无法弄清楚,因此我在这里寻求帮助。
问题描述
每个女孩都喜欢购物,蒲公英也喜欢。现在,她发现这家商店每天都在涨价,因为春节快到了。她喜欢一家叫做“记忆”的商店。现在她想知道每天更换后这家商店的价格排名。
输入
一行包含一个数字n(n <= 10000),代表商店的数量。 然后n行,每行包含一个字符串(长度小于31,并且仅包含小写字母和大写字母。)代表商店的名称。 然后一行包含一个数字m(1 <= m <= 50),代表天。 然后,m个零件,每个零件包含n行,每行包含一个数字s和一个字符串p,代表这一天,商店p的价格增加了s。
输出
包含m行,在第i行第i天后打印商店“内存”的等级。我们将等级定义为:如果有t家商店的价格高于“内存”,则其等级为t + 1。
样本输入
3
memory
kfc
wind
2
49 memory
49 kfc
48 wind
80 kfc
85 wind
83 memory
示例输出
1
2
代码:
#include<algorithm>
#include<iostream>
#include<map>
#include<cstdio>
using namespace std;
const int maxn = 10010;
int main(){
int n,m;
map<string ,int> dic ;
char names[maxn][32];
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%s",names[i]);
dic[names[i]] = 0;
}
scanf("%d",&m);
while(m--){
for(int i = 0;i<n;i++){
int temp;
scanf("%d",&temp);
char tp[32];
scanf("%s",tp);
dic[tp] += temp;
}
int ranking = 1;
for(int j = 0;j<n;j++){
if(dic[names[j]]>dic[names[0]]){
ranking++;
}
}
printf("%d\n",ranking);
}
return 0;
}
尽管我对样品没有任何问题,但是它不能通过黑匣子测试。