我的地图构造有问题吗?

时间:2019-07-19 09:23:31

标签: c++ algorithm c++11 stdmap

我的代码未报告错误。但是,当在在线法官系统中运行时,有人告诉我它无法为某些特殊样品提供正确的答案。我无法弄清楚,因此我在这里寻求帮助。

问题描述

每个女孩都喜欢购物,蒲公英也喜欢。现在,她发现这家商店每天都在涨价,因为春节快到了。她喜欢一家叫做“记忆”的商店。现在她想知道每天更换后这家商店的价格排名。

输入

一行包含一个数字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;
}

尽管我对样品没有任何问题,但是它不能通过黑匣子测试。

0 个答案:

没有答案