PAT 1075. PAT Judge
2014-03-07 23:59
253 查看
题目:http://pat.zju.edu.cn/contests/pat-a-practise/1075
题解:
提交时未通过的在排名输出时显示为0。
需要在排名中显示的至少有一个通过的提交(即只有-1的不显示)。
代码:
来源:/article/8560014.html
题解:
提交时未通过的在排名输出时显示为0。
需要在排名中显示的至少有一个通过的提交(即只有-1的不显示)。
代码:
#include<cstdio> #include<cstring> #include<cmath> #include<string> #include<vector> #include<map> #include<set> #include<queue> #include<algorithm> using namespace std; #define INF 0x6fffffff #define MAX 10005 struct student { int id; int score[7]; int solved; int summ; bool flag; } stu[MAX]; int score[7]; bool cmp(const struct student &a,const struct student &b) { if(a.summ>b.summ) return true; else if(a.summ==b.summ) { return a.solved==b.solved?(a.id<b.id):(a.solved>b.solved); } else return false; } int main() { int n,m,k,len; int name,id,s; scanf("%d%d%d",&n,&k,&m); for(int i=1; i<=k; ++i) scanf("%d",&score[i]); for(int i=1; i<=n; ++i) { stu[i].id=i; stu[i].solved=0; stu[i].summ=0; stu[i].flag=false; for(int j=1; j<=k; ++j) stu[i].score[j]=-2; } for(int i=0; i<m; ++i) { scanf("%d%d%d",&name,&id,&s); if(s>=0) { stu[name].flag=true; if(stu[name].score[id]<s) { stu[name].score[id]=s; if(s==score[id]) ++stu[name].solved; } } else if(s==-1) { if(stu[name].score[id]<s) { stu[name].score[id]=s; } } } for(int i=1; i<=n; ++i) { for(int j=1; j<=k; ++j) if(stu[i].score[j]>0) stu[i].summ+=stu[i].score[j]; } sort(stu+1,stu+1+n,cmp); printf("1 %05d %d",stu[1].id,stu[1].summ); for(int i=1; i<=k; ++i) { if(stu[1].score[i]>=0) printf(" %d",stu[1].score[i]); else if(stu[1].score[i]==-1) printf(" 0"); else printf(" -"); } printf("\n"); if(n>1&&stu[0].summ!=stu[1].summ) len=1; else len=0; for(int i=2,idx=1; i<=n; ++i) { if(stu[i].flag==false) continue; if(stu[i].summ==stu[i-1].summ) { printf("%d %05d %d",idx,stu[i].id,stu[i].summ); for(int j=1; j<=k; ++j) { if(stu[i].score[j]>=0) printf(" %d",stu[i].score[j]); else if(stu[i].score[j]==-1) printf(" 0"); else printf(" -"); } ++len; } else { idx+=len; len=0; printf("%d %05d %d",idx,stu[i].id,stu[i].summ); for(int j=1; j<=k; ++j) { if(stu[i].score[j]>=0) printf(" %d",stu[i].score[j]); else if(stu[i].score[j]==-1) printf(" 0"); else printf(" -"); } ++len; } printf("\n"); } return 0; }
来源:/article/8560014.html
相关文章推荐
- 初识压缩感知Compressive Sensing(转)
- 面向接口编程详解(一)
- 常用的查看代码的网址
- C++调用C#编译的动态连接库
- 压缩感知进阶——有关稀疏矩阵(转)
- “压缩感知” 之 “Hello World”(转)
- VirtualBox宿主机与虚拟机通信
- springMVC 文件下载
- 九度:1162<I wanna go home><最短路径>
- 九度:1008<最短路径>
- 核主成份分析的MatLab实现(转)
- android ListView详解
- dblink概述及创建示例
- Android apk安装过程及Java、JNI读取安装包内assets资源文件的两种方法(附源码实例)
- Unsafe的应用
- 图像处理——掩膜(转)
- 通信中的常见噪声(转)
- Intel VMM简介
- ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้
- Linux裁剪一个MINI系统