比赛 20251001国庆欢乐赛1 评测结果 AWWWWTTTTT
题目名称 有n种物品 最终得分 10
用户昵称 对立猫猫对立 运行时间 9.655 s
代码语言 C++ 内存使用 4.51 MiB
提交时间 2025-10-01 09:08:41
显示代码纯文本
#include <bits/stdc++.h>
//#define int long long
#define fora(i, a, b, c) for(int i = a; i <= b; i += c)
#define forb(i, a, b, c) for(int i = a; i >= b; i -= c)
using namespace std;
int n;
struct Node {
	int f, idx, flag = 0;
	bool operator<(Node b){return f > b.f;}
};
bool cmp(Node a, Node b) {
	return a.idx < b.idx;
}
vector<Node> a, b, x;
int chosen = 0;
long long ansa, ansb;
signed main() {
	freopen("nit.in", "r", stdin);
	freopen("nit.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> n;
	a.resize(n);
	b.resize(n);
	x.resize(n);
	fora(i, 0, n - 1, 1) cin >> a[i].f >> x[i].f, a[i].idx = x[i].idx = i;
	b = a;
	while(chosen < 2 * n) {
		sort(a.begin(), a.end());
		ansa += a[0].f;
		a[0].f = 0xffffffff;
		b[a[0].idx].f = x[a[0].idx].f;
		b[a[0].idx].flag = 1;
		sort(b.begin(), b.end());
		sort(a.begin(), a.end(), cmp);
		ansb += b[0].f;
		b[0].f = 0xffffffff;
		if(!b[0].flag) a[b[0].idx] = x[b[0].idx], a[b[0].idx].flag = 1;
		chosen += 2;
	}
	cout << ansa - ansb << endl;
	return 0;
}