70pts求调
查看原帖
70pts求调
286400
Asad楼主2024/3/24 09:23
#include<bits/stdc++.h>
#define p u / v
using namespace std;
int n, m, q, u, v, t, a[100010];
queue<int> A, B, C;
int main() {
	scanf("%d%d%d%d%d%d", &n, &m, &q, &u, &v, &t);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
	sort(a + 1, a + n + 1);
	reverse(a + 1, a + n + 1);
	for (int i = 1; i <= n; i++) A.push(a[i]);
	int d = 0;
	for (int i = 1; i <= m; i++) {
		int x = -2e9;
		if (A.size()) x = max(x, A.front() + d);
		if (B.size()) x = max(x, B.front() + d);
		if (C.size()) x = max(x, C.front() + d);
		if (A.size() && x == A.front() + d) A.pop();
		else if (B.size() && x == B.front() + d) B.pop();
		else if (C.size() && x == C.front() + d) C.pop();
		if (i % t == 0) printf("%d ", x);
		d += q;
		B.push(x * p - d), C.push(x - x * p - d);
	}
	putchar('\n');
	int i = 0;
	while (A.size() || B.size() || C.size()) {
		++i;
		int x = -2e9;
		if (A.size()) x = max(x, A.front() + d);
		if (B.size()) x = max(x, B.front() + d);
		if (C.size()) x = max(x, C.front() + d);
		if (A.size() && x == A.front() + d) A.pop();
		else if (B.size() && x == B.front() + d) B.pop();
		else if (C.size() && x == C.front() + d) C.pop();
		if (i % t == 0) printf("%d ", x);
	}
	return 0;
}
2024/3/24 09:23
加载中...