九度OJ 1339:ACM (排序)
生活随笔
收集整理的這篇文章主要介紹了
九度OJ 1339:ACM (排序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
時間限制:1 秒
內存限制:32 兆
特殊判題:否
提交:712
解決:379
- 題目描述:
-
今年的ACM世界總決賽快要開始了,需要有一個排名算法來對每支隊伍進行現場排名。ACM組委會把這個任務交給了你,相信你一定能很好地完成。
?排名規則如下:通過題的數目多的隊伍排名靠前,如果有多支隊伍過的題的數目相同,則罰時少的隊伍排名靠前。
- 輸入:
-
輸入的第一行包括一個整數N(1<=N<=100),代表參加比賽的隊伍的個數。
?接下來的N行每行包括一個字符串和兩個整數num,punish,它們之間用空格隔開。其中,第一個字符串代表參賽的隊伍名稱(字符串的長度1<=len<=101),num代表這個學校過了的題目個數(1<=num<=11),punish代表這個學校的罰時(1<=punish<=1000)。
- 輸出:
-
請按題目描述的規則對所有隊伍進行排序,并按照從高到低的順序對隊伍的名稱進行輸出。當然可能存在多支隊伍,不僅通過題目數量相同,而且罰時相同。雖然這些隊伍最后排名是相同的,但是你輸出時需要按照隊伍名稱的字典序進行輸出,比如,隊伍aa和隊伍ba,你需要先輸出aa,然后輸出ba,因為aa的字典序比ba的靠前。
- 樣例輸入:
-
4 RealPlayers 3 100 Potatoes 5 30 blue_sky 7 800 3D_magic_cube 5 50
- 樣例輸出:
-
blue_sky Potatoes 3D_magic_cube RealPlayers
思路:
排序題用qsort或者sort都比較簡單,主要是注意細節。
代碼:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define N 100typedef struct node {char name[105];int num;int punish;
} TEAM;int cmp(const void *a, const void *b)
{TEAM *c = (TEAM *)a;TEAM *d = (TEAM *)b;if (c->num != d->num)return d->num - c->num;if (c->punish != d->punish)return c->punish - d->punish;return strcmp(c->name, d->name);
}int main(void)
{int n, i;TEAM t[N];while (scanf("%d", &n) != EOF){for(i=0; i<n; i++)scanf("%s%d%d", t[i].name, &t[i].num, &t[i].punish);qsort(t, n, sizeof(t[0]), cmp);for(i=0; i<n; i++)printf("%s\n", t[i].name);}return 0;
}
/**************************************************************Problem: 1339User: liangrx06Language: CResult: AcceptedTime:0 msMemory:912 kb
****************************************************************/轉載于:https://www.cnblogs.com/liangrx06/p/5083794.html
總結
以上是生活随笔為你收集整理的九度OJ 1339:ACM (排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq韩语个性签名带翻译
- 下一篇: 求一个咖啡说的个性签名。