92求调
查看原帖
92求调
1070431
ywtank楼主2024/9/23 13:50

这题能紫?

#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const int N = 1000 + 10;
int fu = 1;
int bang;
int jie[N] = {0};
struct car {
	int a, b, id;
} j[N], j2[N];
int main() {
	int n;
	scanf("%d", &n);
	bang = n;
	for (int i = 1; i <= n; i++) {
		scanf("%d", &(j[i].a));
		j2[i].a = j[i].a;
	}
	for (int i = 1; i <= n; i++) {
		scanf("%d", &(j[i].b));
		j2[i].b = j[i].b;
		j[i].id = i;
		j2[i].id = i;
	}
	int len = n;
	while (len) {
		car* a = &(j[1]);
		bool b = 0; //0a1b
		for (int i = 2; i <= n; i++) {
			if (j[i].a < (b ? (a->b) : (a->a))) {
				b = 0;
				a = &(j[i]);
			}
			if (j[i].b < (b ? (a->b) : (a->a))) {
				b = 1;
				a = &(j[i]);
			}
		}
		if (b)jie[bang--] = a->id;
		else jie[fu++] = a->id;
		len--;
		a->a = INF;
		a->b = INF;
	}
	int timea = 0, timeb = 0;
	for (int i = 1; i <= n; i++) {
		timea += (j2[jie[i]].a);
		if (timeb < timea)timeb = timea;
		timeb += (j2[jie[i]].b);
	}
	printf("%d\n", timeb);
	for (int i = 1; i <= n; i++) {
		printf("%d ", jie[i]);
	}
	return 0;
}

希望各位大佬帮忙看看

2024/9/23 13:50
加载中...