PAT(A) 101-111-1-2014-03-01 C PAT Judge

考试时出现了“exit 不是global namespace成员”的编译错误, 后来google才知道是有混蛋注释了哪里头文件的exit定义,坑得我不能本地调试

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;

typedef struct{
	int userId;
	int perfect;
	int total;	

}user;

int score[10010][6];

vector<user> users;

bool cmp(user a, user b){
	if(a.total != b.total){
		return (a.total>b.total);
	}else if(a.perfect != b.perfect){
		return (a.perfect > b.perfect);
	}else {
		return (a.userId < b.userId);
	}	
}

int main(){
	//freopen("in.txt", "r", stdin);
	int N, K, M;//users, problems, submittions
	int i,j;
	int mark[6];

	memset(score, -2, sizeof(score));

	scanf("%d %d %d",&N, &K, &M);
	for(i = 1; i<=K; i++){
		scanf("%d", &mark[i]);
	}

	for(i=0; i<M; i++){
		int uid, pid, ps;
		scanf("%d %d %d", &uid, &pid, &ps);
		//如果有题的得分是-1 也更新
		score[uid][pid] = score[uid][pid] < ps ? ps : score[uid][pid];
	}

	for(i=1; i<=N; i++){
		int total = 0;
		int perfect = 0;		

		int flag = 0;
		for(j=1; j<=K; j++){
			if(score[i][j] == mark[j]) perfect++;
			if(score[i][j] > -1) {total += score[i][j]; flag = 1;}			
		}
		//没有一道编译过 或是 压根就没有提交记录
		if(flag){
			user tmp;
			tmp.userId = i;
			tmp.total = total;
			tmp.perfect = perfect;
			users.push_back(tmp);
		}
	}

	sort(users.begin(), users.end(), cmp);

	//test
	//for(i=0; i<users.size(); i++){
	//	printf("%d %d %d\n",users[i].userId,users[i].total, users[i].perfect);
	//}

	int curTotal = users[0].total;
	int rank = 1;
	for(i=0; i<users.size(); i++){
		int uid = users[i].userId;
		int total = users[i].total;

		if(curTotal > total){
			rank = i+1;
			curTotal = total;
		}

		printf("%d %05d %d", rank, uid, total);
		for(j=1; j<=K; j++){
			if(score[uid][j] > -2){
				//对于得分是-1的题 输出为0
				printf(" %d",score[uid][j] > -1 ? score[uid][j] : 0);
			}else{
				printf(" -");
			}
		}
		printf("\n");

	}



	return 0;
}


你可能感兴趣的:(PAT(A) 101-111-1-2014-03-01 C PAT Judge)