码迷,mamicode.com
首页 > 其他好文 > 详细

PAT1075. PAT Judge (25)

时间:2016-04-09 20:37:31      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

其中在排名输出上参照了

http://blog.csdn.net/xyzchenzd/article/details/27074665,原先自己写的很繁琐,而且还有一个测试点不通过。

#include <iostream>
#include <vector>
#include <string.h>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct PATInfo
{
	int userId;
	int p[10];
	int sum;
	int flag;// is qualified to output
	int perfect;// full score num
	PATInfo(){
		for(int j=0;j<10;j++) p[j]=-2;
		sum=0;
		flag=0;
		perfect=0;
	}
};
int n,k,m;
int i,j;
int prob[10];
bool cmp(const PATInfo &a,const PATInfo &b){
	if(a.sum!=b.sum) return a.sum>b.sum;
	if(a.perfect!=b.perfect) return a.perfect>b.perfect;
	return a.userId<b.userId;
}
int main()
{

	cin>>n>>k>>m;
	PATInfo *userSet=new PATInfo[n+1];
	for(i=1;i<=k;i++) cin>>prob[i];
	for(i=1;i<=n;i++) userSet[i].userId=i;
	int uId,pId,obtainS;
	for(i=0;i<m;i++){
		cin>>uId>>pId>>obtainS;
		if(userSet[uId].p[pId]<obtainS){
			if(obtainS>=0){
				userSet[uId].sum+=obtainS;
				userSet[uId].flag=1;
			}
			if(userSet[uId].p[pId]>0){
				userSet[uId].sum-=userSet[uId].p[pId];
			}
			userSet[uId].p[pId]=obtainS;
			if(obtainS==prob[pId]){
				userSet[uId].perfect++;
			}
		}
	}
	sort(userSet+1,userSet+n+1,cmp);
	int score=userSet[0].sum;
	int t=1;
	for(i=1;i<=n;i++){
		if(userSet[i].flag==0) break;
		if(score!=userSet[i].sum){
			t=i;
			score=userSet[i].sum;
		}
		printf("%d %05d ",t,userSet[i].userId);
		cout<<userSet[i].sum;
		for(j=1;j<=k;j++){
			if(userSet[i].p[j]==-2){
				cout<<" -";
			}else if(userSet[i].p[j]==-1){
				cout<<" 0";
			}else{
				cout<<" "<<userSet[i].p[j];
			}
		}
		cout<<endl;
	}
	delete [] userSet;
	return 0;
}

	

  

 

PAT1075. PAT Judge (25)

标签:

原文地址:http://www.cnblogs.com/yellowman/p/5372475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!