RT,代码如下:
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int n, m, q, u, v, t;
cin >> n >> m >> q >> u >> v >> t;
queue<int> q1, q2, q3;
int a[n];
for(int i = 0;i < n;i++){
cin >> a[i];
}
sort(a, a + n);
for(int i = n - 1;i >= 0;i--){
q1.push(a[i]);
}
int delta = 0;
for(int i = 1;i <= m;i++){
int a1 = (q1.empty() ? 0 : q1.front());
int a2 = (q2.empty() ? 0 : q2.front());
int a3 = (q3.empty() ? 0 : q3.front());
int k = max(a1, max(a2, a3));
if(q1.size() && k == q1.front()) q1.pop();
else if(q2.size() && k == q2.front()) q2.pop();
else q3.pop();
if(i % t == 0){
cout << k + delta << " ";
}
k += delta;
double t1 = (double)u / (double)v;
int p = k * t1;
q2.push(p - delta - q), q3.push(k - p - delta - q);
delta += q;
}
vector<int> vec;
while(!q1.empty()){
vec.push_back(q1.front());
q1.pop();
}
while(!q2.empty()){
vec.push_back(q2.front());
q2.pop();
}
while(!q3.empty()){
vec.push_back(q3.front());
q3.pop();
}
cout << endl;
sort(vec.begin(), vec.end(), greater<int>());
for(int i = t - 1;i < vec.size();i += t){
cout << vec[i] + delta << " ";
}
return 0;
}