http://acm.hdu.edu.cn/showproblem.php?pid=5131

现场赛第一个题,水题。题意:给水浒英雄排序,按照杀人数大到小,相同按照名字字典序小到大。输出。然后对每个查询的名字,计数有多少人杀人数大于他,输出个数加1,计数有多少人杀人数相同,但名字小,如果没有不输出,否则输出个数加1。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 using namespace std;
 5 struct G{
 6     string name;
 7     int kill;
 8     friend bool operator <(const G a,const G b){
 9         return a.kill>b.kill||(a.kill==b.kill&&a.name<b.name);
10     }
11 }g[512];
12 string str;
13 int main(){
14     int n,m,id;
15     while(~scanf("%d",&n),n){
16         for(int i=0;i<n;i++){
17             cin>>g[i].name>>g[i].kill;
18         }
19         sort(g,g+n);
20         for(int i=0;i<n;i++){
21             cout<<g[i].name<<" "<<g[i].kill<<endl;
22         }
23         scanf("%d",&m);
24         while(m--){
25             cin>>str;
26             for(int i=0;i<n;i++){
27                 if(str==g[i].name){
28                     id=i;
29                     break;
30                 }
31             }
32             int ansa=1,ansb=1;
33             for(int i=0;i<id;i++){
34                 if(g[i].kill>g[id].kill){
35                     ansa++;
36                 }
37                 else{
38                     ansb++;
39                 }
40             }
41             printf("%d",ansa);
42             if(ansb>1){
43                 printf(" %d",ansb);
44             }
45             puts("");
46         }
47     }
48     return 0;
49 }
View Code

相关文章:

  • 2021-07-18
  • 2021-09-28
  • 2022-12-23
  • 2021-11-09
  • 2021-07-21
  • 2022-12-23
  • 2021-12-17
  • 2021-11-03
猜你喜欢
  • 2022-03-03
  • 2021-08-01
  • 2022-01-04
  • 2021-09-19
  • 2022-12-23
  • 2022-01-14
  • 2021-08-31
相关资源
相似解决方案