1075 PAT Judge (25 分)

1075 PAT Judge (25 分),第1张

1075 PAT Judge (25 分) 1075 PAT Judge (25 分)
#include 
#include 
using namespace std;
struct node{
	int id, total, ret, f;
	int s[10];
}a[10100], b[10100];
int p[10], vis[10100];
bool cmp(node x, node y){
	if(x.total != y.total)
		return x.total > y.total;
	else if(x.ret != y.ret)
		return x.ret > y.ret;
	else if(x.id != y.id)
		return x.id < y.id; 
}
int main() {
	int n, k, m, ret = 1;
	cin >> n >> k >> m;
	for(int i = 1; i <= n; ++i)
		for(int j = 1; j <= k; ++j)
			a[i].s[j] = -1;
	for(int i = 1; i <= k; ++i)
		cin >> p[i];
	while(m--){
		int x, y, z;
		cin >> x >> y >> z;
		a[x].id = x;
		a[x].s[y] = max(a[x].s[y], z);
		if(z == -1)
			a[x].s[y] = max(a[x].s[y], 0);
		else
			a[x].f = 1; 
	}
	for(int i = 1; i <= n; ++i){
		if(a[i].f){
			b[ret] = a[i];
			for(int j = 1; j <= k; ++j){
				if(b[ret].s[j] != -1){
					b[ret].total += b[ret].s[j];
					if(b[ret].s[j] == p[j])
						b[ret].ret++;
				}
			}
			ret++;
		}
	}
	sort(b + 1, b + ret, cmp);
	int r = 0, net = 1;
	for(int i = 1; i < ret; ++i){
		if(b[i].total == b[i - 1].total){
			net++;
			printf("%d ", r);
		}
		else{
			r += net; net = 1;
			printf("%d ", r);
		}
		printf("%05d %d ", b[i].id, b[i].total);
		for(int j = 1; j <= k; ++j){
			if(b[i].s[j] != -1)
				cout << b[i].s[j];
			else
				cout << "-";
			if(j != k)
				cout << " ";	
		}
		cout << endl;
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5657527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存