7-41 pat排名彙總 (25 分)
每次考試會在若干個不同的考點同時舉行,每個考點用區域網,產生本考點的成績。考試結束後,各個考點的成績將即刻彙總成一張總的排名表。
現在就請你寫乙個程式自動歸併各個考點的成績並生成總排名表。
輸入的第一行給出乙個正整數n(≤100),代表考點總數。隨後給出n個考點的成績,格式為:首先一行給出正整數k(≤300),代表該考點的考生總數;隨後k行,每行給出1個考生的資訊,包括考號(由13位整數字組成)和得分(為[0,100]區間內的整數),中間用空格分隔。
首先在第一行裡輸出考生總數。隨後輸出彙總的排名表,每個考生的資訊佔一行,順序為:考號、最終排名、考點編號、在該考點的排名。其中考點按輸入給出的順序從1到n編號。考生的輸出須按最終排名的非遞減順序輸出,獲得相同分數的考生應有相同名次,並按考號的遞增順序輸出。
2
51234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
41234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4
#include
#include
#include
#include
using namespace std;
typedef struct stu;
vectorlist;
bool cmp(stu s1, stu s2)
bool cmp2(stu s1, stu s2)
int main()
}sort(list.begin(), list.end(), cmp);
int last = 0, kc = 1, rank = 1, lastrank = 1;
for (int i = 0; i < list.size(); i++)
list[i].rank = rank;
if (list[i].grade == last)
lastrank = list[i].rank;
last = list[i].grade;
rank++;
}sort(list.begin(),list.end(),cmp2);
rank = 1;
lastrank = 1;
last = 0;
for (int i = 0; i < list.size(); i++)
else
list[i].sumrank = rank;
lastrank = list[i].sumrank;
last = list[i].grade;
rank++;
}cout << list.size() << endl;
for (int i = 0; i < list.size(); i++)
cout << list[i].id << " " << list[i].sumrank << " " << list[i].kc << " " << list[i].rank << endl;
return 0;
}
7 41 PAT排名彙總(25 分)
每次考試會在若干個不同的考點同時舉行,每個考點用區域網,產生本考點的成績。考試結束後,各個考點的成績將即刻彙總成一張總的排名表。現在就請你寫乙個程式自動歸併各個考點的成績並生成總排名表。輸入的第一行給出乙個正整數n 100 代表考點總數。隨後給出n個考點的成績,格式為 首先一行給出正整數k 300 ...
7 41 PAT排名彙總 25分
每次考試會在若干個不同的考點同時舉行,每個考點用區域網,產生本考點的成績。考試結束後,各個考點的成績將即刻彙總成一張總的排名表。現在就請你寫乙個程式自動歸併各個考點的成績並生成總排名表。輸入格式 輸入的第一行給出乙個正整數n 100 代表考點總數。隨後給出n個考點的成績,格式為 首先一行給出正整數k...
PAT排名彙總
pat排名彙總 每次考試會在若干個不同的考點同時舉行,每個考點用區域網,產生本考點的成績。考試結束後,各個考點的成績將即刻彙總成一張總的排名表。現在就請你寫乙個程式自動歸併各個考點的成績並生成總排名表。輸入的第一行給出乙個正整數n le 100 代表考點總數。隨後給出n個考點的成績,格式為 首先一行...