RT,我也不知道为什么……到了直接运行的时候就输出了一堆极大的数字,但是调试的时候输出就没有问题qwq
#include<bits/stdc++.h>
using namespace std;
int n, m, q, t;
double u, v;
int a[1919810];
queue<pair<int, int> > q1, q2, q3;
inline int read()
{
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c>'9')
{
if (c == '-') f = -1;
c = getchar();
}
while (c <= '9' && c >= '0')
{
x = (x << 3) + (x << 1) + (c ^ '0');
c = getchar();
}
return x * f;
}
int aa(int i)
{
return q1.front().first + q * (i - 1);
}
int bb(int i)
{
return q2.front().first + q * (i - (q2.front().second) - 1);
}
int cc(int i)
{
return q3.front().first + q * (i - (q3.front().second) - 1);
}
int aaa(int i)
{
if (q1.size() != 0)
return q1.front().first + q * (i - (q1.front().second) - 1);
}
bool cmp(int x, int y)
{
return x > y;
}
int main()
{
n = read();
m = read();
q = read();
scanf("%lf%lf", &u, &v);
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)
{
q1.push(make_pair(a[i], -i));
}
double p = u / v;
for (int i = 1;i <= m;++i)
{
int qwq;
if (q1.size() != 0 && aa(i) >= bb(i) && aa(i) >= cc(i))
{
qwq = q1.front().first + q * (i - 1);
q1.pop();
}
else if (q2.size() != 0 && bb(i) >= cc(i) && bb(i) >= aa(i))
{
qwq = bb(i);
q2.pop();
}
else
{
qwq = cc(i);
q3.pop();
}
int tmp1 = floor(qwq * p);
int tmp2 = qwq - tmp1;
int m1 = tmp1 > tmp2 ? tmp1 : tmp2;
int m2 = tmp1 > tmp2 ? tmp2 : tmp1;
q2.push(make_pair(m1, i));
q3.push(make_pair(m2, i));
if (i % t == 0) printf("%d ", qwq);
}
printf("\n");
for (int i = 1;i <= n + m;++i)
{
int qwq;
if (q1.size() != 0 && aaa(m) >= bb(m) && aaa(m) >= cc(m))
{
qwq = aaa(m);
q1.pop();
}
else if (q2.size() != 0 && bb(m) >= cc(m) && bb(m) >= aaa(m))
{
qwq = bb(m);
q2.pop();
}
else
{
qwq = cc(m);
q3.pop();
}
if (i % t == 0) printf("%d ", qwq + 1);
}
return 0;
}