交易清单(京东2016实习生真题)

来源:互联网 发布:网络交友的危害翻译 编辑:程序博客网 时间:2024/05/17 06:14

题目链接:http://exercise.acmcoder.com/online/online_judge_ques?ques_id=3811&konwledgeId=41

解题思路:map 排序

ac代码:

#include<cstdio>#include<algorithm>#include<iostream>#include<map>using namespace std;int main(){int n,s,i,x,y,k,l;char c;//map本身按key排序 ,从小到大 ,所以需要改变排序方式 map<int,int,greater<int> >B_map;//主键key按从大到小排序 map<int,int,greater<int> >S_map;while(scanf("%d%d",&n,&s)!=EOF){B_map.clear();S_map.clear();for(i=0;i<n;i++){getchar();scanf("%c %d%d",&c,&x,&y);if(c=='B'){B_map[x]+=y;}else{S_map[x]+=y;}}     l=S_map.size()-s>0?S_map.size()-s:0;     k=1;     map<int,int,greater<int> >::iterator it;for(it=S_map.begin();it!=S_map.end();it++){if(k>l){printf("S %d %d\n",it->first,it->second);}else{k++;}}k=1;for(it=B_map.begin();it!=B_map.end();it++){  if(k<=s){  printf("B %d %d\n",it->first,it->second);  k++;  }else{  break;  }   } }return 0;}


0 0
原创粉丝点击