[2016-03-31][codeforces][659B][Qualifying Contest]

  • 时间:2016-03-31 23:29:09 星期四

  • 题目编号:[2016-03-31][codeforces][659B][Qualifying Contest].md

  • 题目大意:有m个地区共有n个人参加组队资格赛,每个地区选最高分的两个人参加最终比赛,给出资格赛的成绩,输出每个地区参加组队赛的两个人,如果无法确定人选(比如3个最高分同分),那么就输出?

  • 分析:按地区号排序,再按分数排序,在判断第二名和第三名是否同分

  1. #include <algorithm>
  2. #include <cstdio>
  3. using namespace std;
  4. struct Peo{
  5. char name[20];
  6. int region,score;
  7. bool operator < (const Peo & a)const{
  8. return region < a.region || (region == a.region && score > a.score);
  9. }
  10. }a[100000 + 10];
  11. int main(){
  12. int n,m;
  13. scanf("%d%d",&n,&m);
  14. for(int i = 0;i < n ; ++i){
  15. scanf("%s%d%d",&a[i].name,&a[i].region,&a[i].score);
  16. }
  17. sort(a,a+n);
  18. int pre = 0;
  19. for(int i = 0;i < n ; ++i){
  20. if(a[i].region != pre){
  21. pre = a[i].region;
  22. if(a[i+1].region == a[i + 2].region && a[i+1].score == a[i + 2].score){
  23. printf("?\n");
  24. continue;
  25. }else{
  26. printf("%s %s\n",a[i].name,a[i+1].name);
  27. }
  28. }
  29. }
  30. return 0;
  31. }


来自为知笔记(Wiz)


posted on 2016-03-31 23:42  红洋  阅读(215)  评论(0)    收藏  举报

导航