pat-advanced-1025
来源:互联网 发布:国家数据 编辑:程序博客网 时间:2024/06/06 06:41
1025. PAT Ranking (25)
Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhejiang University. Each test is supposed to run simultaneously in several places, and the ranklists will be merged immediately after the test. Now it is your job to write a program to correctly merge all the ranklists and generate the final rank.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive number N (<=100), the number of test locations. Then N ranklists follow, each starts with a line containing a positive integer K (<=300), the number of testees, and then K lines containing the registration number (a 13-digit number) and the total score of each testee. All the numbers in a line are separated by a space.
Output Specification:
For each test case, first print in one line the total number of testees. Then print the final ranklist in the following format:
registration_number final_rank location_number local_rank
The locations are numbered from 1 to N. The output must be sorted in nondecreasing order of the final ranks. The testees with the same score must have the same rank, and the output must be sorted in nondecreasing order of their registration numbers.
Sample Input:251234567890001 951234567890005 1001234567890003 951234567890002 771234567890004 8541234567890013 651234567890011 251234567890014 1001234567890012 85Sample Output:
91234567890005 1 1 11234567890014 1 2 11234567890001 3 1 21234567890003 3 1 21234567890004 5 1 41234567890012 5 2 21234567890002 7 1 51234567890013 8 2 31234567890011 9 2 4
#include<stdio.h>#include<string.h>#include<algorithm>struct list{char registration[20];int score;int location;int location_rank;int final_rank;}an[30005];using namespace std;bool cmp(struct list a,struct list b){if(a.score!=b.score)return a.score>b.score;elsereturn strcmp(a.registration,b.registration)<0;}int main(){int n,i,j,rank;j=0,rank=1;scanf("%d",&n);for(i=1;i<=n;i++){int k,cj,lrank;cj=j;lrank=1;scanf("%d",&k);for(;j<cj+k;j++){scanf("%s %d",an[j].registration,&an[j].score);an[j].location=i;} sort(an+cj,an+j,cmp);an[cj].location_rank=1;lrank++;for(j=cj+1;j<cj+k;j++){if(an[j].score==an[j-1].score){an[j].location_rank=an[j-1].location_rank;lrank++;}else{an[j].location_rank=lrank++;}}}sort(an,an+j,cmp);an[0].final_rank=rank;printf("%d\n",j);printf("%s 1 %d 1\n",an[0].registration,an[0].location);rank++;for(i=1;i<j;i++){printf("%s ",an[i].registration);if(an[i].score==an[i-1].score){an[i].final_rank=an[i-1].final_rank;printf("%d ",an[i].final_rank);rank++;}else{an[i].final_rank=rank++;printf("%d ",an[i].final_rank);}printf("%d %d\n",an[i].location,an[i].location_rank);}return 0;}
- pat-advanced-1025
- Pat(Advanced Level)Practice--1025(PAT Ranking)
- PAT (Advanced Level) Practise 1025 PAT Ranking (25)
- PAT (Advanced Level) Practise 1025 PAT Ranking (25)
- PAT Advanced 1065
- PAT Advanced 1001
- PAT Advanced 1043
- PAT Advanced 1042
- PAT Advanced 1067
- PAT Advanced 1066
- PAT Advanced 1005
- pat advanced 1044
- pat advanced 1042
- pat advanced 1043
- pat advanced 1032
- pat:1002(Advanced)
- pat advanced 1050
- pat advanced 1051
- Linux基础之重定向
- maven 安装 、更新插件出错 An error occurred while uninstalling session context was:(profile=epp.package
- Byte源码解读.md
- node的事件发射器EventEmitter
- JVM CMS GC收集器
- pat-advanced-1025
- Codeforces 612D The Union of k-Segments
- 求数组中次数超过一半的数字
- 进程
- Okhttp源码分析(五)连接池
- 可用:zlib-1.2.11.tar+openssl-1.0.2l.tar+curl-7.54.1.tar纯静态编译
- android 约束布局案例
- linux常用解压缩命令
- Android居然采用Kotlin语言作为开发语言