PAT-A1025 PAT Ranking(25)
2016-03-01 10:16
459 查看
重点是排名,方法:排序好后第一个人是第一名,其后则如果和前一个分数一样,则和前一个人排名一样,否则排名为下标+1.
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; #define MAX 30000+10 struct Testee { char regis_num[14]; int score; int final_rank; int locata_number; int local_rank; } testee[MAX]; int cnt = 0; int cmp_local(const void *a, const void *b) { return (*(Testee*)b).score - (*(Testee*)a).score; } int cmp_all(const void *a, const void *b) { if ((*(Testee*)b).score != (*(Testee*)a).score) return (*(Testee*)b).score - (*(Testee*)a).score; else return strcmp((*(Testee*)a).regis_num, (*(Testee*)b).regis_num); } int main() { //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); int N = 0; cin >> N; //n个地点 for (int i = 1; i <= N; i++) { int n = 0; Testee local_testee[300+10]; cin >> n; for (int j = 0; j < n; j++) { cin >> local_testee[j].regis_num >> local_testee[j].score; local_testee[j].locata_number = i; } qsort(local_testee, n, sizeof(local_testee[0]), cmp_local); local_testee[0].local_rank = 1; testee[cnt++] = local_testee[0]; for (int j = 1; j < n; j++) { if (local_testee[j].score == local_testee[j-1].score) local_testee[j].local_rank = local_testee[j-1].local_rank; else local_testee[j].local_rank = j+1; testee[cnt++] = local_testee[j]; } } qsort(testee, cnt, sizeof(testee[0]), cmp_all); testee[0].final_rank = 1; for (int i = 1; i < cnt; i++) { if (testee[i].score == testee[i-1].score) testee[i].final_rank = testee[i-1].final_rank; else testee[i].final_rank = i+1; } //output cout << cnt << endl; for (int i = 0; i < cnt; i++) { cout << testee[i].regis_num << " " << testee[i].final_rank << " " << testee[i].locata_number << " " << testee[i].local_rank << endl; } return 0; }
相关文章推荐
- Java反射
- MavenEclipse
- @Autowired与@Resource的差别
- Java网络连接之HttpURLConnection与HttpClient 区别及联系
- 提交苹果审核App被拒原因
- JQuery 多个ID对象绑定一个click事件
- 转 Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- iOS 在制作framework时候对aggregate的配置
- elasticsearch 建立索引以及设置相关 field属性
- servlet之response
- Git查看、删除、重命名远程分支和tag
- Object.prototype.toString跨框架判断类型
- 队列Queue模拟排队问题
- Android之RecyclerView简单使用(完结篇)
- 如何使用Android studio打开eclipse项目
- Android studio 获取aar包 获取签名文件信息
- Java中Properties类的使用
- Java 流(Stream)、文件(File)和IO
- openPOWERLINK开源POWERLINK协议栈说明文档中文非官方翻译
- leetcode 2. Add Two Numbers