评测记录:https://www.luogu.com.cn/record/85095907
代码如下:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,q,u,v,t,a[100010],b[8000000],sum,k;
queue<int> q1,q2,q3;
bool cmp(int a,int b){
return a>b;
}
main(){
scanf("%lld%lld%lld%lld%lld%lld",&n,&m,&q,&u,&v,&t);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++) q1.push(a[i]);
for(int i=1;i<=m;i++){
int maxs=0;
if(!q1.empty()&&q1.front()>maxs) maxs=q1.front();
if(!q2.empty()&&q2.front()>maxs) maxs=q2.front();
if(!q3.empty()&&q3.front()>maxs) maxs=q3.front();
if(!q1.empty()&&q1.front()==maxs) q1.pop();
else if(!q2.empty()&&q2.front()==maxs) q2.pop();
else q3.pop();
maxs+=sum;
if(i%t==0) printf("%lld ",maxs);
int x=maxs*u/v,y=maxs-x;
sum+=q;
x-=sum;
y-=sum;
q2.push(x);
q3.push(y);
}
while(!q1.empty()){
b[++k]=q1.front()+sum;
q1.pop();
}
while(!q2.empty()){
b[++k]=q2.front()+sum;
q2.pop();
}
while(!q3.empty()){
b[++k]=q3.front()+sum;
q3.pop();
}
printf("\n");
sort(b+1,b+k+1,cmp);
for(int i=1;i<=k;i++){
if(i%t==0) printf("%lld ",b[i]);
}
return 0;
}