大佬帮忙看看哪错了
查看原帖
大佬帮忙看看哪错了
1570494
Qiand楼主2024/11/11 20:30
#include<iostream>
using namespace std;

struct Stu {
	int Ch, Ma, En, ra;
	
	int topo = Ch + Ma + En;

};

struct Tran {
	int ttopo, tCh, tMa;
	int sum = tCh + tMa;
	int max = (tCh > tMa) ? tCh : tMa;
	int flag1 = 0;
};


int main() {
	int N;
	Tran t[10000];
	Tran temp;
	cin >> N;
	Stu S[10000];
	for (int i = 0; i < N; i++) {
		cin >> S[i].Ch >> S[i].Ma >> S[i].En;
	}
	for(int i = 0; i < N; i++ ) {
		t[i].ttopo = S[i].topo;
		t[i].tCh = S[i].Ch;
		t[i].tMa = S[i].Ma;
	}
	int end = N;
	while (end) {
		int flag = 0;
		for (int i = 0; i < end - 1; i++) {
			if (t[i].ttopo < t[i + 1].ttopo) {
				temp = t[i];
				t[i] = t[i + 1];
				t[i + 1] = temp;
				flag = 1;
			}
			else if (t[i].ttopo = t[i + 1].ttopo) {
				if (t[i].sum < t[i + 1].sum) {
					temp = t[i];
					t[i] = t[i + 1];
					t[i + 1] = temp;
					flag = 1;
				}
				if (t[i].sum = t[i + 1].sum) {
					if (t[i].max < t[i + 1].max) {
						temp = t[i];
						t[i] = t[i + 1];
						t[i + 1] = temp;
						flag = 1;
					}
					if (t[i].max = t[i + 1].max) {
						t[i + 1].flag1 = 1;
						flag = 1;
					}

				}
			}
		}
		if (flag == 0) break;
		else end--;
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if (t[i].ttopo == S[j].topo && t[i].tCh == S[j].Ch && t[i].tMa == S[j].Ma) {
				if (t[i].flag1 == 1) S[j].ra = i;
				else S[j].ra = i + 1;
			}
		}
	}
	for (int i = 0; i < N; i++) {
		cout << S[i].ra << endl;
	}

	return 0;
}
2024/11/11 20:30
加载中...