PAT 1075. PAT Judge (模拟题)
来源:互联网 发布:c语言开发应用程序 编辑:程序博客网 时间:2024/05/01 03:31
n个用户(1...n), k门课程(1...k), m次提交,模拟PAT排名。
总得分高的排名前;
总得分相等,满分题数多的排名前;
满分题数仍相等,id小的排名前。
从未提交 或 提交代码从未通过编译的用户不予输出。
注意到,输出用户信息时,该用户从未提交过的题目输出为"-"; 提交过未得到分的(得分为0或编译未通过的),则输出"0".
#include <iostream>#include <algorithm>#include <vector>#include <cstdio>//#include <map>using namespace std;struct User;int n, k, m;int p[6];struct User{int m_rank;int m_id;int m_score[6];int m_submit_cnt[6];User(){for (int i = 1; i <= 5; ++ i){m_score[i] = -1;m_submit_cnt[i] = 0;}}friend bool operator< (const User& a, const User& b){int aa = a.get_tot_score();int bb = b.get_tot_score();if (aa != bb){return aa > bb;} else if (a.get_perfect_num() != b.get_perfect_num()){return a.get_perfect_num() > b.get_perfect_num();} else{return a.m_id < b.m_id;}}int get_tot_score() const {int ret = -1;for (int i = 1; i <= k ; ++ i){if (m_score[i] != -1){// 最终可以让从未提交、或从未通过编译的用户排在最末尾if (ret == -1){ret = 0;}ret += m_score[i];}}return ret;}int get_perfect_num() const {int ret = 0;for (int i = 1; i <= k; ++ i){if (m_score[i] == p[i]){++ ret;}}return ret;}bool print() const {bool should_print = false;for (int i = 1; i <= k; ++ i){if (m_score[i] != -1){should_print = true;break;}}if (should_print == false){return false;}printf("%d %05d %d", m_rank, m_id, get_tot_score());for (int i = 1; i <= k; ++ i){if (m_submit_cnt[i] > 0){if (m_score[i] == -1){printf(" 0");} else {printf(" %d", m_score[i]);}} else{printf(" -");}}printf("\n");return true;}};User user[10010];int main(){int course_id, score, user_id;scanf("%d%d%d", &n, &k, &m);for (int i = 1; i <= k; ++ i){scanf("%d", p+i);}for (int i = 0; i < m; ++ i){scanf("%d%d%d", &user_id, &course_id, &score);user[user_id].m_id = user_id;++ user[user_id].m_submit_cnt[course_id];if (user[user_id].m_score[course_id] < score){user[user_id].m_score[course_id] = score;}}sort(user+1, user+n+1);user[1].m_rank = 1;for (int i = 2; i <= n; ++ i){if (user[i].get_tot_score() == user[i-1].get_tot_score()){user[i].m_rank = user[i-1].m_rank;} else{user[i].m_rank = i;}}for (int i = 1; i <= n; ++ i){if (user[i].print() == false){break;}}return 0;}
0 0
- PAT 1075. PAT Judge (模拟题)
- PAT 1075. PAT Judge
- PAT-1075. PAT Judge
- 【PAT】1075. PAT Judge
- PAT--1075. PAT Judge
- PTA PAT Judge 【模拟题,未完待续】
- PAT 1075. PAT Judge (25)
- PAT 1075. PAT Judge (25)
- 【PAT】1075. PAT Judge (25)
- 1075. PAT Judge
- 1075. PAT Judge
- 1075. PAT Judge (25)
- 1075. PAT Judge (25)
- 1075.PAT Judge
- 1075. PAT Judge (25)
- 1075. PAT Judge (25)
- 1075. PAT Judge (25)
- 1075. PAT Judge (25)
- UIButton使用方法汇总
- 长尾关键词的挖掘与分析
- 下面是windows的体系结构:
- 模块识别地址到底是个什么东西
- 初识spring boot maven管理--属性文件配置
- PAT 1075. PAT Judge (模拟题)
- java异常处理(三)
- SSH框架
- C++学习日志之运用类模板正确使用指针栈
- Android BroadcastReceiver
- gdb调试命令使用
- mysql使用大全
- Android gradle 0.9 ,编译.so 文件需要注意
- 快速查询本机IP