hdu2648

来源:互联网 发布:网络错误651怎么解决 编辑:程序博客网 时间:2024/06/16 13:21

Shopping

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3275    Accepted Submission(s): 1203


Problem Description
Every girl likes shopping,so does dandelion.Now she finds the shop is increasing the price every day because the Spring Festival is coming .She is fond of a shop which is called "memory". Now she wants to know the rank of this shop's price after the change of everyday.
 

Input
One line contians a number n ( n<=10000),stands for the number of shops.
Then n lines ,each line contains a string (the length is short than 31 and only contains lowercase letters and capital letters.)stands for the name of the shop.
Then a line contians a number m (1<=m<=50),stands for the days .
Then m parts , every parts contians n lines , each line contians a number s and a string p ,stands for this day ,the shop p 's price has increased s.
 

Output
Contains m lines ,In the ith line print a number of the shop "memory" 's rank after the ith day. We define the rank as :If there are t shops' price is higher than the "memory" , than its rank is t+1.
 

Sample Input
3memorykfcwind249 memory49 kfc48 wind80 kfc85 wind83 memory
 

Sample Output
12
AC代码:
#include<iostream>#include<algorithm>#include<string>#include<map>using namespace std;struct node{        int id;        int s;}a[10005];int main(void){        int n,m,p,id;        string c;        map<string,int>M;        while(cin>>n)        {                M.clear();                for(int i=0;i<n;i++)                {                        cin>>c;                        M[c]=i;                        if(c=="memory")                                 id=i;                        a[i].s=0;                        a[i].id=i;                }                cin>>m;                while(m--)                {                        for(int i=0;i<n;i++)                        {                                cin>>p>>c;                                a[M[c]].s+=p;                        }                        int cnt=0;                        for(int i=0;i<n;i++)                        if(a[i].s>a[id].s)                                 cnt++;                        printf("%d\n",cnt+1);                }        }        return 0;}
原创粉丝点击