#include<bits/stdc++.h>
inline int scan(void){
int result=0;
char got=getchar();
int minus=1;
while('9'<got||got<'0'){
if(got=='-'){
minus=-1;
};
got=getchar();
};
while('0'<=got&&got<='9'){
result=result*10+got-'0';
got=getchar();
};
return result*minus;
};
inline void print(int answer){
if(answer<0){
putchar('-');
answer=-answer;
};
if(answer/10){
print(answer/10);
};
putchar(answer%10+'0');
};
int function(std::queue<int> queue){
if(queue.empty()){
return -2147483648;
}else{
return queue.front();
};
};
std::pair<int,int> max(std::pair<int,int> cmp1,std::pair<int,int> cmp2,std::pair<int,int> cmp3){
return std::max(std::max(cmp1,cmp2),cmp3);
};
int mimizu[100001];
std::queue<int> queue[4];
int main(int argc,char **argv){
int maxn=scan(),maxm=scan(),maxq=scan(),tmp1=scan(),tmp2=scan(),tmp3=scan();
double pos=tmp1*1.0/tmp2;
for(int iter=1;iter<=maxn;++iter){
mimizu[iter]=scan();
};
std::sort(mimizu+1,mimizu+1+maxn,std::greater<int>());
for(int iter=1;iter<=maxn;++iter){
queue[1].push(mimizu[iter]);
};
for(int time=1;time<=maxm;++time){
std::pair<int,int> pair=max({function(queue[1]),1},{function(queue[2]),2},{function(queue[3]),3});
int first=pair.first+maxq*time;
int second=pair.second;
queue[second].pop();
int head=int(pos*first);
int tail=first-head;
queue[2].push(head-maxq*(time+1));
queue[3].push(tail-maxq*(time+1));
if(time%tmp3==0){
print(first);
putchar(' ');
};
};
putchar('\n');
for(int iter=1;iter<=maxn+maxm;++iter){
std::pair<int,int> pair=max({function(queue[1]),1},{function(queue[2]),2},{function(queue[3]),3});
int first=pair.first;
int second=pair.second;
queue[second].pop();
if(iter%tmp3==0){
print(first+maxq*maxm);
putchar(' ');
};
};
return 0;
};
测试点情况