45分10--20RE求教
查看原帖
45分10--20RE求教
941594
in_share楼主2024/10/15 00:02
#include<bits/stdc++.h>
using namespace std;
int n;
struct cj {
	long long  g, s, b;
	int id;
} p[10001], p1[10001];

bool cmp1(cj x, cj y) {
	long long a = x.g;
	long long b = y.g;
	return a > b ;
}
bool cmp2(cj x, cj y) {
	long long a = x.s;
	long long b = y.s;
	return a > b ;
}
bool cmp3(cj x, cj y) {
	long long a = x.b;
	long long b = y.b;
	return a > b ;
}
int main() {
	long long a1[10001], b1[10001], c1[10001];
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> p[i].g >> p[i].s >> p[i].b;
		a1[i] = INT_MAX;
		b1[i] = INT_MAX;
		c1[i] = INT_MAX;
		p1[i].g = p[i].g;
		p1[i].s = p[i].s;
		p1[i].b = p[i].b;
		p[i].id = i;
		p1[i].id = i;
	}

	sort(p + 1, p + 1 + n, cmp1);//按金银牌排序
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {

			if (p1[p1[i].id].g == p[j].g) {
				a1[i] = j; //金牌的排名
				break;
			}
		}
	}

	sort(p + 1, p + 1 + n, cmp2);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (p1[p1[i].id].s == p[j].s) {
				b1[i] = j; //银牌的排名
				break;
			}
		}
	}

	sort(p + 1, p + 1 + n, cmp3);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (p1[p1[i].id].b == p[j].b) {
				c1[i] = j; //铜牌的排名
				break;
			}
		}
	}

	for (int i = 1; i <= n; i++) {
		cout << min(a1[i], min(b1[i], c1[i])) << endl;
	}
	return 0;
}

题目的思路(应该不是思路的问题

2024/10/15 00:02
加载中...