SDUT 2446 最終排名

Problem Description

第四屆山東理工大學ACM網絡編程擂臺賽比賽完後需要產生一個最終排名,排名按照題數多少來決定。但是有太多的隊伍參與,手動計算排名已經不能滿足比賽的需求。現在有一份名單記錄各個隊伍的ID和做出的題目數,需要你寫一個程序,產生最終的排名。
爲了簡化題目,這裏的排名規則爲:做出題目數量多的隊伍排在前面,如果題數相等,保持輸入時的相對順序不要改變。

Input

第一行包含一個正整數T( 1 ≤ T ≤ 15),表示有T組測試數據。每組數據第一行有一個正整數N(1 < N ≤ 10000),表示隊伍數量。接下來N 行包含兩個整數,1 ≤ ID ≤ 10^7, 0 ≤ M ≤ 100。ID爲隊伍的編號,M爲做出的題數。

Output

每組數據輸出包含N行,第i行有兩個整數,ID和M表示排在第i位的隊伍的ID和做出的題數。

Sample Input

1
8
1 2
16 3
11 2
20 3
3 5
26 4
7 1
22 4

Sample Output

3 5
26 4
22 4
16 3
20 3
1 2
11 2
7 1

#include <stdio.h>
#include <stdlib.h>
struct acm{
    long long id;
    int score;
}a[10000],t;
int main()
{
    int n,i,j,T;
    scanf("%d",&T);
    while(T--){
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
        scanf("%lld %d",&a[i].id,&a[i].score);
    }
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if (a[j].score<a[j+1].score)
            {t=a[j];a[j]=a[j+1];a[j+1]=t;}
        }
    }
    for (i=0;i<n;i++)
    {
        printf("%lld %d\n",a[i].id,a[i].score);
    }
    }
    return 0;
}

發佈了28 篇原創文章 · 獲贊 17 · 訪問量 1208
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章