PAT 1025. PAT Ranking (25)
2015-03-14 11:23
288 查看
//1025. PAT Ranking (25) //acc #include <iostream> #include <string.h> #include <algorithm> using namespace std; typedef struct { char name[14]; int score; int index; }Student; bool cmp( Student stu1, Student stu2) { if (stu1.score == stu2.score) { return strcmp(stu1.name , stu2.name) < 0; } return stu1.score > stu2.score; } int main() { int N; cin >> N; int i; Student stu[30001]; int Index[101]; int j; int start = 0; int total = 0; for (i=0;i<N;i++) { //cin >> Index[i]; scanf("%d", &Index[i]); for (j = start;j<Index[i]+start; j++) { scanf("%s %d", stu[j].name, &stu[j].score); stu[j].index = i+1; } start += Index[i]; total += Index[i]; } cout << total << endl; sort(stu, stu+total, cmp); int curr[101]; fill(curr, curr + 101, 1); int pre = -20; int premingci = 1; int mingci; int arr[101]; fill(arr, arr + 101, -1); int arrpre[101]; fill(arrpre, arrpre + 101, -1); for (i = 0;i< total;i++) { if(pre == stu[i].score) { mingci = premingci; } else { mingci = i+1; pre = stu[i].score; premingci = mingci; } cout << stu[i].name << " " << mingci << " " << stu[i].index << " "; if (arr[ stu[i].index ] == -1 || stu[i].score != arr[stu[i].index]) { cout << curr[ stu[i].index ]<< endl; arr[stu[i].index] = stu[i].score; arrpre[stu[i].index] = curr[stu[i].index]; curr[stu[i].index]++; } else { cout << arrpre[stu[i].index] << endl; curr[stu[i].index]++; } } return 0; }
相关文章推荐
- PAT刷题:1025. PAT Ranking (25)
- 1025. PAT Ranking (25)
- 1025. PAT Ranking (25)
- 1025. PAT Ranking (25)
- PAT-1025 PAT Ranking (25)
- 【PAT】1025. PAT Ranking (25)
- 【PAT甲级】1025. PAT Ranking (25)
- 【PAT】1025. PAT Ranking (25)
- 1025. PAT Ranking (25)
- 【PAT】【Advanced Level】1025. PAT Ranking (25)
- 1025. PAT Ranking (25)
- PAT 1025. PAT Ranking (25)
- 1025. PAT Ranking (25)
- 【C++】PAT(advanced level)1025. PAT Ranking (25)*
- PAT 1025. PAT Ranking (25)
- PAT(甲级)1025. PAT Ranking (25)
- PAT:A1025. PAT Ranking (0/25)
- 1025. PAT Ranking (25)
- PAT-A1025 PAT Ranking(25)
- 1025. PAT Ranking (25)