看报错信息,应该是 O2 的锅
关于我三个样例一个都没过却没有一个点 WA 这件事
#include<bits/stdc++.h>
#define int __int128
using namespace std;
const int N = 1e5 + 9;
int read() {
char c = getchar();
int x = 0, f = 1;
while (c < '0' || c > '9') {
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
x = (x << 3) + (x << 1) + c - 48;
c = getchar();
}
return x * f;
}
void print(int x){
if(x < 0){
putchar('-');
x = -x;
}
if(x > 9)
print(x / 10);
putchar(x % 10 + '0');
return;
}
int n,m,q,delta;
int u,v,t;
int a[N];
queue<int>que[5];
int Max,id,Head,len;
bool cmp(int x,int y){
return x > y;
}
signed main(){
n = read();m = read();q = read();u = read();v = read();t = read();
for(int i = 1;i <= n;i++)
a[i] = read();
sort(a + 1,a + n + 1,cmp);
for(int i = 1;i <= n;i++)
que[0].push(a[i]);
for(int i = 1;i <= m;i++){
Max = -1;
for(int j = 0;j <= 2;j++){
if(!que[j].empty()) {
Head = que[j].front();
if(Head > Max){
Max = Head;
id = j;
}
}
}
Head = que[id].front() + delta;
if(!(i % t))
print(Head),putchar(' ');
que[id].pop();
len = Head * u / v;
que[1].push(len - delta - q);
que[2].push(Head - len - delta - q);
delta += q;
}
putchar('\n');
for(int i = 1;i <= n + m;i++){
Max = -1;
for(int j = 0;j <= 2;j++){
if(!que[j].empty()){
Head = que[j].front();
if(Head > Max){
Max = Head;
id = j;
}
}
}
Head = que[id].front() + delta;
if(!(i % t))
print(Head),putchar(' ');
que[id].pop();
}
return 0;
}