[NOIP2016 提高组] 蚯蚓
2024年12月24日小于 1 分钟
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, m, q, u, v, t;
int a[100005];
queue<int> qq[3];
bool cmp(int x, int y)
{
return x > y;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m >> q >> u >> v >> t;
for (int i = 1; i <= n; i++)
cin >> a[i];
sort(a + 1, a + n + 1, cmp);
for (int i = 1; i <= n; i++)
qq[0].push(a[i]);
int sumq = 0;
for (int i = 1; i <= m; i++)
{
int maxi = -1;
for (int i = 0; i <= 2; i++)
if (!qq[i].empty() && (maxi == -1 || qq[i].front() > qq[maxi].front()))
maxi = i;
int now = qq[maxi].front() + sumq;
sumq += q;
qq[maxi].pop();
int l = now * u / v;
int r = now - l;
if (l < r)
swap(l, r);
l -= sumq;
r -= sumq;
qq[1].push(l);
qq[2].push(r);
if (i % t == 0)
cout << now << " ";
}
cout << "\n";
for (int i = 1; i <= n + m; i++)
{
int maxi = -1;
for (int i = 0; i <= 2; i++)
if (!qq[i].empty() && (maxi == -1 || qq[i].front() > qq[maxi].front()))
maxi = i;
if (i % t == 0)
cout << qq[maxi].front() + sumq << ' ';
qq[maxi].pop();
}
cout << "\n";
return 0;
}