PAT 1025. PAT Ranking (25)
2015-08-12 16:35
295 查看
1025. PAT Ranking (25)
时间限制200 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
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:
2 5 1234567890001 95 1234567890005 100 1234567890003 95 1234567890002 77 1234567890004 85 4 1234567890013 65 1234567890011 25 1234567890014 100 1234567890012 85
Sample Output:
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
这道题也不涉及什么算法,就是简单的运用map,set 等容器就可以完成,代码如下:
#include <iostream> #include <map> #include <string> #include <algorithm> #include <set> using namespace std; map<string,int> localNum; map<string,int> localRank; map<int,set<string> > whole; int main(int argc, char** argv) { int N,K,person=0; cin>>N; map<int,set<string> >::reverse_iterator mit; set<string>::iterator sit; for(int i=1;i<=N;i++) { cin>>K; person+=K; map<int,set<string> > local; for(int j=0;j<K;j++) { string ID; int score; cin>>ID>>score; if(local.count(score)<=0) { set<string> temp; temp.insert(ID); local[score]=temp; } else local[score].insert(ID); if(whole.count(score)<=0) { set<string> temp; temp.insert(ID); whole[score]=temp; } else whole[score].insert(ID); localNum[ID]=i; } int rank=1; int count=0; for(mit=local.rbegin();mit!=local.rend();mit++) { for(sit=mit->second.begin();sit!=mit->second.end();sit++) { localRank[*sit]=rank; count++; } rank+=count; count=0; } } cout<<person<<endl; int rank=1; int count=0; for(mit=whole.rbegin();mit!=whole.rend();mit++) { for(sit=mit->second.begin();sit!=mit->second.end();sit++) { cout<<*sit<<" "<<rank<<" "<<localNum[*sit]<<" "<<localRank[*sit]<<endl; count++; } rank+=count; count=0; } }
相关文章推荐
- 20150812-IAR平台工程生成HEX文件或BIN文件的方法
- 侧滑删除进阶(二)
- 九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)
- 控制textbox里的值大于35,小于52
- MQ JMS发送消息并接收客户端回复
- NOIP2013模拟10.23囚人的旋律
- Javascript 面向对象
- mybatis实现数据的批量删除
- 大家对华为的评价
- QT信号槽的跨线程连接
- Android Service绑定与跨进程通信
- HDU 4911 Inversion【归并排序求逆序数】
- HDU1162
- .NET平台和C#编程基础知识复习
- 最长递增子序列(Longest increasing subsequence)
- 编写高质量代码改善C#程序的157个建议——建议3: 区别对待强制转型与as和is
- HeadFirst 设计模式 2观察者模式 (气象站实现)
- 初识分布式服务管理框架-Dubbo
- php轻量级的性能分析工具xhprof的安装使用
- 彩色TabBar切换动画实现