A1075 PAT Judge (25 分)
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. This time you are supposed to generate the ranklist for PAT.
Input Specification:
Each input file contains one test case. For each case, the first line contains 3 positive integers, N (≤104), the total number of users, K (≤5), the total number of problems, and M (≤105), the total number of submissions. It is then assumed that the user id's are 5-digit numbers from 00001 to N, and the problem id's are from 1 to K. The next line contains K positive integers p[i] (i=1, ..., K), where p[i] corresponds to the full mark of the i-th problem. Then M lines follow, each gives the information of a submission in the following format:
user_id problem_id partial_score_obtained
where partial_score_obtained is either −1 if the submission cannot even pass the compiler, or is an integer in the range [0, p[problem_id]]. All the numbers in a line are separated by a space.
Output Specification:
For each test case, you are supposed to output the ranklist in the following format:
rank user_id total_score s[1] ... s[K]
where rank is calculated according to the total_score, and all the users with the same total_score obtain the same rank; and s[i] is the partial score obtained for the i-th problem. If a user has never submitted a solution for a problem, then "-" must be printed at the corresponding position. If a user has submitted several solutions to solve one problem, then the highest score will be counted.
The ranklist must be printed in non-decreasing order of the ranks. For those who have the same rank, users must be sorted in nonincreasing order according to the number of perfectly solved problems. And if there is still a tie, then they must be printed in increasing order of their id's. For those who has never submitted any solution that can pass the compiler, or has never submitted any solution, they must NOT be shown on the ranklist. It is guaranteed that at least one user can be shown on the ranklist.
Sample Input:
7 4 20
20 25 25 30
00002 2 12
00007 4 17
00005 1 19
00007 2 25
00005 1 20
00002 2 2
00005 1 15
00001 1 18
00004 3 25
00002 2 25
00005 3 22
00006 4 -1
00001 2 18
00002 1 20
00004 1 15
00002 4 18
00001 3 4
00001 4 2
00005 2 -1
00004 2 0
Sample Output:
1 00002 63 20 25 - 18
2 00005 42 20 0 22 -
2 00007 42 - 25 - 17
2 00001 42 18 18 4 2
5 00004 40 15 0 25 -
出错点:sort范围弄错,必须maxn,不能用m,注意细节!!!
#include<bits/stdc++.h>
using namespace std; const int maxn=; int n,k,m; int problem[]; struct Record{
int stuId;
int pId;
int score;
}rec[maxn]; struct Student{
int stuId;
int total;
int grade[];
bool flag[];
int needPrint;
int solve;
int rank; }stu[maxn]; bool cmp(Student a,Student b){
if(a.needPrint!=b.needPrint)
return a.needPrint>b.needPrint;
else if(a.total!=b.total)
return a.total>b.total;
else if(a.solve!=b.solve)
return a.solve>b.solve;
else if(a.stuId!=b.stuId)
return a.stuId<b.stuId;
} int main(){ //cin>>n>>k>>m; scanf("%d%d%d",&n,&k,&m); for(int i=;i<=k;i++)
//cin>>problem[i];
scanf("%d",&problem[i]); Record temp; for(int i=;i<m;i++){
//cin>>temp.stuId>>temp.pId>>temp.score; int stuId,pId,score; scanf("%d%d%d",&stuId,&pId,&score); stu[stuId].flag[pId]=true; if(score!=-){
stu[stuId].stuId=stuId;
stu[stuId].needPrint=; if(score>stu[stuId].grade[pId]){
stu[stuId].total+=(score-stu[stuId].grade[pId]);
stu[stuId].grade[pId]=score; if(score==problem[pId])
stu[stuId].solve++; } }else{
continue;
} } sort(stu,stu+maxn,cmp); //必须用maxn,不能用m stu[].rank=; for(int i=;i<m;i++){
if(stu[i].total==stu[i-].total)
stu[i].rank=stu[i-].rank;
else
stu[i].rank=i+;
} for(int i=;i<m;i++){
if(stu[i].needPrint){
printf("%d %05d %d",stu[i].rank,stu[i].stuId,stu[i].total); // printf("%d %d %05d %d",stu[i].needPrint,stu[i].rank,stu[i].stuId,stu[i].total); for(int j=;j<=k;j++){
if(stu[i].flag[j]==false){
printf(" -");
}else{
printf(" %d",stu[i].grade[j]);
}
} printf("\n"); }else{
break;
}
} return ;
}
A1075 PAT Judge (25 分)的更多相关文章
- A1075 PAT Judge (25)(25 分)
A1075 PAT Judge (25)(25 分) The ranklist of PAT is generated from the status list, which shows the sc ...
- PTA 10-排序5 PAT Judge (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/677 5-15 PAT Judge (25分) The ranklist of PA ...
- PAT 甲级 1075 PAT Judge (25分)(较简单,注意细节)
1075 PAT Judge (25分) The ranklist of PAT is generated from the status list, which shows the scores ...
- PATA1075 PAT Judge (25 分)
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...
- 10-排序5 PAT Judge (25 分)
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...
- 【PAT甲级】1075 PAT Judge (25 分)
题意: 输入三个正整数N,K,M(N<=10000,K<=5,M<=100000),接着输入一行K个正整数表示该题满分,接着输入M行数据,每行包括学生的ID(五位整数1~N),题号和 ...
- PTA 5-15 PAT Judge (25分)
/* * 1.主要就用了个sort对结构体的三级排序 */ #include "iostream" #include "algorithm" using nam ...
- 1040 有几个PAT (25 分)
题目链接:1040 有几个PAT (25 分) 做这道题目,遇到了新的困难.解决之后有了新的收获,甚是欣喜! 刚开始我用三个vector数组存储P A T三个字符出现的位置,然后三层for循环,根据字 ...
- 1025 PAT Ranking (25分)
1025 PAT Ranking (25分) 1. 题目 2. 思路 设置结构体, 先对每一个local排序,再整合后排序 3. 注意点 整体排序时注意如果分数相同的情况下还要按照编号排序 4. 代码 ...
随机推荐
- 洛谷 2327 [SCOI2005]扫雷
输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一列中雷的摆放方案数. 输入输出样例 输入样例#1 ...
- JS中的call()、apply() 以及 bind()方法用法总结
JS中的call()方法和apply()方法用法总结 : 讲解: 调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域. function add(c,d){ return thi ...
- Linux-vim编辑器 常用命令 复制粘贴
Linux-vim编辑器 一.vim三种工作模式 1.1.命令模式 在此模式下,可以使用上.下.左.右键或者 k.j.h.l 命令进行光标移动,还可以对文件内容进行复制.粘贴.替换.删除等操作. 1. ...
- Java学习之classpath
要运行class文件,必须在class文件所在的目录下,那么是不是也可以通过设置系统变量来配置呢,当然有了classpath就来了 环境变量配置有两种 1.一劳永逸的 2.set 临时变量 我们用临时 ...
- jdk8处理时间
对当前时间格式化: public static long getCurrentTimeMillis(String pattern) { return Long.valueOf(toString(Loc ...
- JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化
这种用法包括前端和后端: 前端: 1. 转化为JSON对象方便操作 var jsonObj = JSON.parse(str); 得到的是一个json数组对象,可以通过 for (var p in j ...
- zookeeper 同一docker伪集群
1).集群目录 cd /usr/local/zookeeper01/data touch myid vi 输入 cd /usr/local/zookeeper01/data touch myid v ...
- 微信小程序--学习的案例
一.「程序秀」 「程序秀」这个小程序非常特别,因为它是一个可以帮助别人开发小程序的小程序.它以「即速应用」这个无需代码一键生成微信小程序的开发工具为基础,为广大开发爱好者提供小程序开发的最新资讯和培训 ...
- echart 柱状图背景色设置
方法一: series: [ { name: '1', type: 'bar', itemStyle: {//柱图背景色 color: '#111' }, data: list }, { name: ...
- JS数组 选定元素slice() slice() 方法可从已有的数组中返回选定的元素。 语法 arrayObject.slice(start,end)
选定元素slice() slice() 方法可从已有的数组中返回选定的元素. 语法 arrayObject.slice(start,end) 参数说明: 1.返回一个新的数组,包含从 start 到 ...