zoukankan      html  css  js  c++  java
  • 奥运排序问题 分数:2

     

    时间限制:1 秒
    内存限制:32 兆
    特殊判题:
    提交:62
    解决:31

    标签

    • 排序

    题目描述

    按要求,给国家进行排名。

    输入格式

    有多组数据。
    第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。
    第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。
    接下来一行给出M个国家号。

    输出

    排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例
    对每个国家给出最佳排名排名方式 和 最终排名
    格式为: 排名:排名方式
    如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例
    如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4.
    每组数据后加一个空行。

    样例输入

    4 4
    4 8 1
    6 6 2
    4 8 2
    2 12 4
    0 1 2 3
    4 2
    8 10 1
    8 11 2
    8 12 3
    8 13 4
    0 3

    样例输出

    1:3
    1:1
    2:1
    1:2

    1:1

    1:1



      1 //在九度WA,但是其他OJAC
      2 
      3  
      4 #include <iostream>
      5 #include <algorithm>
      6 using namespace std;
      7 struct E
      8 {
      9     int num,golde,model,people;
     10 int oder[4];
     11 }buf[100000];
     12  
     13 bool cmp0(E a,E b)
     14 {
     15 return a.num<b.num;
     16 }
     17  
     18 bool cmp1(E a,E b)
     19 {
     20 return a.golde>b.golde;
     21 }
     22  
     23 bool cmp2(E a,E b)
     24 {
     25 return a.model>b.model;
     26 }
     27  
     28 bool cmp3(E a,E b)
     29 {
     30 return (a.golde/a.people)>(b.golde/b.people);
     31 }
     32  
     33 bool cmp4(E a,E b)
     34 {
     35 return (a.model/a.people)>(b.model/b.people);
     36 }
     37  
     38 int main()
     39 {
     40    int N,M;
     41    while(cin>>N>>M)
     42    {
     43       for(int i=0;i<N;i++)
     44  {
     45  buf[i].num=i;
     46  cin>>buf[i].golde>>buf[i].model>>buf[i].people;
     47  }
     48  for(int i=0;i<M;i++)
     49  {
     50    int temp;
     51 cin>>temp;
     52 buf[i]=buf[temp];
     53  }
     54        
     55  sort(buf,buf+M,cmp1);//1
     56  for(int i=0;i<M;i++)
     57  {
     58  if(i!=0&&buf[i-1].golde==buf[i].golde)
     59  buf[i].oder[0]=buf[i-1].oder[0];
     60  else
     61  buf[i].oder[0]=i+1;
     62  
     63  }
     64  
     65  
     66   sort(buf,buf+M,cmp2);//2
     67  for(int i=0;i<M;i++)
     68  {
     69  if(i!=0&&buf[i-1].model==buf[i].model)
     70  buf[i].oder[1]=buf[i-1].oder[1];
     71  else
     72  buf[i].oder[1]=i+1;
     73  
     74  }
     75  
     76  
     77   sort(buf,buf+M,cmp3);//3
     78  for(int i=0;i<M;i++)
     79  {
     80  if(i!=0&&(buf[i-1].golde/buf[i-1].people)==(buf[i].golde/buf[i].people))
     81  buf[i].oder[2]=buf[i-1].oder[2];
     82  else
     83  buf[i].oder[2]=i+1;
     84  }
     85  
     86  
     87   sort(buf,buf+M,cmp4);//4
     88  for(int i=0;i<M;i++)
     89  {
     90  if(i!=0&&(buf[i-1].model/buf[i-1].people)==(buf[i].model/buf[i].people))
     91  buf[i].oder[3]=buf[i-1].oder[3];
     92  else
     93  buf[i].oder[3]=i+1;
     94  }
     95  
     96  sort(buf,buf+M,cmp0);
     97  for(int i=0;i<M;i++)
     98  {
     99  int index=0;
    100     for(int j=0;j<4;j++)
    101 {
    102 if(buf[i].oder[j]<buf[i].oder[index])
    103 index=j;
    104 }
    105  
    106 cout<<buf[i].oder[index]<<":"<<index+1<<endl;
    107  }
    108  cout<<endl;
    109    }
    110    return 0;
    111 }  
    112  
  • 相关阅读:
    修改Unity脚本模板的方法合计
    Mesh.Bake Scaled Mesh PhysX CollisionData的性能问题
    Scene的实时追踪显示
    基于Unity3D的AOP使用思路
    导出Unity场景为配置文件
    unity3d中namespace的使用注意问题
    [iOS]通过xib定义Cell然后关联UICollectionView
    swift之弹出一个背景半透明的UIViewController
    swift之xib关联UIView
    iOS坑爹的could not find any information for class named xxx
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4266725.html
Copyright © 2011-2022 走看看