QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#755278 | #9574. Strips | xjt05 | RE | 1ms | 5732kb | C++23 | 2.7kb | 2024-11-16 16:56:19 | 2024-11-16 16:56:19 |
Judging History
answer
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define ll long long
#define lowbit(x) (x & -x)
#define endl "\n"// 交互题记得删除
using namespace std;
mt19937 rnd(time(0));
const ll mod = 998244353;
ll ksm(ll x, ll y)
{
ll ans = 1;
while (y)
{
if (y & 1)
{
ans = ans % mod * (x % mod) % mod;
}
x = x % mod * (x % mod) % mod;
y >>= 1;
}
return ans % mod % mod;
}
ll gcd(ll x, ll y)
{
if (y == 0)
return x;
else
return gcd(y, x % y);
}
void fio()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
ll a[450000];
ll b[450000];
vector<ll> ans;
ll d[450000];
int main()
{
fio();
ll t;
cin >> t;
while (t--)
{
ans.clear();
ll n, m, k, w;
cin >> n >> m >> k >> w;
for (ll i = 1; i <= n; i++)
{
cin >> a[i];
}
for (ll i = 1; i <= m; i++)cin >> b[i];
b[m + 1] = w + 1;
b[0] = 0;
sort(a + 1, a + 1 + n);
sort(b + 1, b + 1 + m);
ll cnt = 1;
ll l, r;
ll op = 0;
for (ll i = 0; i <= m; i++)
{
l = cnt;
if(cnt==n+1)break;
while (a[cnt] >= b[i] && a[cnt] <= b[i + 1])
{
r = cnt;
cnt++;
}
ll an = b[i];
ll gs = 0;
ll pd = 0;
ll wz;
for (ll j = l; j <= r; j++)
{
if (j == l)
{
wz = max(a[j] - k + 1, b[i] + 1);
gs++;
d[gs] = wz;
}
else
{
if (a[j] > wz + k - 1)
{
wz = max(wz + k, a[j] - wz + 1);
gs++;
d[gs] = wz;
}
}
if (j == r)
{
if (wz + k - 1 < b[i + 1])
{
pd = 1;
}
}
}
if (pd == 1)
{
for (ll j = 1; j <= gs; j++)ans.push_back(d[j]);
continue;
}
else if (pd == 0)
{
gs = 0;
ll wz;
for (ll j = l; j <= r; j++)
{
if (j == r)
{
wz = min(b[i + 1] - 1, a[j] + k - 1);
gs++;
d[gs] = wz - k + 1;
}
else
{
if (a[j] < wz - k + 1)
{
wz =min(wz - k, a[j] + wz -1);
gs++;
d[gs] = wz;
}
}
if (j == l)
{
if (d[gs] - k + 1 <= b[i])
{
pd = 1;
}
}
}
if (pd == 1)
{
op = 1;
break;
}
else
{
for (ll j = 1; j <= gs; j++)ans.push_back(d[j]);
}
}
}
if (op)
cout << -1 << endl;
else
{
cout << ans.size() << endl;
for (auto j : ans)
cout << j << " ";
cout << endl;
}
}
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5732kb
input:
4 5 2 3 16 7 11 2 9 14 13 5 3 2 4 11 6 10 2 1 11 2 1 2 6 1 5 3 2 1 2 6 1 5 2
output:
4 1 6 9 14 -1 2 1 4 -1
result:
ok ok 4 cases (4 test cases)
Test #2:
score: -100
Runtime Error
input:
11000 3 8 2 53 32 3 33 35 19 38 20 1 30 10 6 7 10 1 42 3 14 4 36 28 40 22 17 20 12 41 27 7 1 19 13 9 6 6 13 78 55 76 53 32 54 58 62 45 21 4 7 61 8 7 3 68 9 26 54 31 22 3 38 65 34 16 58 47 52 29 53 5 8 4 33 33 5 30 6 15 27 12 9 28 19 2 13 10 6 1 2 48 8 12 48 1 41 31 40 7 6 7 61 20 19 30 52 49 17 40 3...