zoukankan      html  css  js  c++  java
  • 水王争霸(NOIP2003 提高组)

    描述

    众所周知,IOIForum有很多水王,他们的发贴数是如此之多,以至于必须要用高精度数才能保存。

    为了迎接国庆,IOIForum决定举行一次水王争霸赛,比赛的规则是将这些水王截止到2003年9月30日23时59分59秒这一刻所发的总贴数从大到小进行排序。每个水王当然都想取得尽量靠前的名次,所以他们竭尽全力,不择手段地进行灌水。

    终于,激动人心的一刻到来了,2003年10月1日0时0分0秒,你作为裁判得到了每个水王的发贴数,现在,你的任务是公正地把这些水王按照发贴数从大到小进行排序。

    输入格式

    输入的第一行是一个1到1000的整数N,表示总共有N位水王参加了争霸赛。

    以下依次给出每位水王的描述,一位水王的描述占据两行,第一行为一个仅由字母和数字组成的长度不超过20的字符串,代表这个水王的ID,第二行一个高精度的整数(非负数),代表这个水王的发贴数。注意,这个整数的首位没有不必要的0。

    考虑到IOIForum的数据库是有限的,所有水王发贴数的总长度(注意,是总长度而不是总和)不会超过10000。

    除了子母、数字和必要的换行,输入中不会出现空格等字符。

    输出格式

    依次输出按照发贴数从大到小排好序的各位水王的ID,每个ID占据单独的一行。不能有任何多余的字符。若几个ID的发贴数相同,则按照ID的字典顺序先后排列。

    样例

    样例输入 样例输出
    6
    lowai
    1534534124561243453
    zhouyuan
    23453265344
    Maolaoda
    23442353452342
    BuTaoCaiGuai
    7568784573464
    ArthurKing
    97534892734723947
    hyyylr
    623893451

    lowai
    ArthurKing
    Maolaoda
    BuTaoCaiGuai
    zhouyuan
    hyyylr






    限制

    对于100%的数据时限=1s

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<string>
     4 
     5 using namespace std;
     6 
     7 struct shui
     8 {
     9     string id,num;
    10 }a[10010];
    11 
    12 int n;
    13 
    14 int main()
    15 {
    16     cin >> n;
    17     for(int i = 0;i < n;i++)
    18     {
    19         cin >> a[i].id >> a[i].num;
    20     }
    21     for(int i = 0;i < n;i++)
    22     {
    23         for(int j = 0;j < n-1;j++)
    24         {
    25             if(a[j].num.length() < a[j+1].num.length())
    26                 swap(a[j], a[j+1]);
    27             else if(a[j].num.length() == a[j+1].num.length())
    28             {
    29                 for(int k = 0;k < (int)a[j].num.length();k++)
    30                 {
    31                     if(a[j].num[k] < a[j+1].num[k])
    32                     {
    33                         swap(a[j], a[j+1]);
    34                         break;
    35                     }
    36                     else if(a[j].num[k] > a[j+1].num[k])
    37                         break;
    38                     else if(k == (int)a[j].num.length()-1 && a[j].id > a[j+1].id)
    39                         swap(a[j], a[j+1]);
    40                     else
    41                         continue;
    42                 }                
    43             }
    44         }
    45     }
    46     for(int i = 0;i < n;i++)
    47     {
    48         cout << a[i].id << endl;
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    Swift之 ? 和 !
    objective-c工程使用swift
    NSMethodSignature和NSInvocation的用法
    NSTimer
    iOS 的 XMPPFramework
    计算string高度
    python学习:猜数字小游戏
    python 各种控制语句
    ③ 小程序的代码组成
    ③ 组件&props
  • 原文地址:https://www.cnblogs.com/tanjiaqi/p/7529332.html
Copyright © 2011-2022 走看看