@HASPID
查看原帖
@HASPID
1351155
liuzhuoran141516楼主2024/10/3 21:21
#include <bits/stdc++.h>
using namespace std;
struct cow {
	long long v, has;
}w[200005];
bool cmp(cow a, cow b) {
	return a.has > b.has;
}
int n, m, k, x;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m >> k >> x;
	for (int i = 1; i <= n; i ++) {
		cin >> w[i].v;
		w[i].has = k - w[i].v;
		if (w[i].has < 0) {
			w[i].has = 0;
		}
	}
	sort(w + 1, w + n + 1, cmp);
	for (int i = m; i > 0; i = i) {
		for (int j = 1; j <= n; j ++) {
			if (w[j].has >= x) {
				while (w[j].has >= x and i > 0) {
					w[j].has -= x;
					w[j].v += x;
					i --;
				}
				if (i == 0) {
					break;
				}
			}
		}
		if (i > 0) {
			sort(w + 1, w + n + 1, cmp);
			for (int k = 1; k <= n; k ++) {
				w[k].v += x;
				i --;
				if (i == 0) {
					goto out;
				}
			}
		}
	}
	out:;
	long long ans = 0;
	for (int i = 1; i <= n; i ++) {
		if (w[i].v >= k) {
			ans += k;
		} else {
			ans += w[i].v;
		}
	}
	cout << ans;
	return 0;
}
2024/10/3 21:21
加载中...