QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#737590 | #9574. Strips | dreamjoker# | WA | 29ms | 3580kb | C++23 | 1.6kb | 2024-11-12 16:21:26 | 2024-11-12 16:21:28 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
void sol() {
int n,m,k,w; cin>>n>>m>>k>>w;
vector<int> a(n);
vector<int> b(m);
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<m;i++)
cin>>b[i];
ranges::sort(a);
ranges::sort(b);
b.push_back(w+1);
vector<int> ans;
vector<int> tmp;
auto solve=[&](int l,int r) {
int n=tmp.size();
for(int &x:tmp) x-=l;
vector<int> dp(n),from(n,-1);
dp[0]=0;
for(int i=1,j=0;i<n;i++) {
while(tmp[i]-tmp[j+1]+1>k) j++;
dp[i]=max(dp[j]+k,tmp[i]);
from[i]=j;
}
if(dp.back()>=r) return false;
int x=n-1;
vector<int> path;
while(x) {
path.push_back(dp[x]+l-k+1);
x=from[x];
}
while(!path.empty()) {
ans.push_back(path.back());
path.pop_back();
}
return true;
};
for(int L=0,i=0;int R:b) {
tmp.push_back(L);
while(i<n&&a[i]<R) {
tmp.push_back(a[i++]);
}
if(!solve(L,R)) {
// cout<<"range: "<<L<<' '<<R<<endl;
// for(int x:tmp) cout<<x<<' ';
// cout<<endl;
return cout<<-1<<'\n',void();
}
L=R;
tmp.clear();
}
cout<<ans.size()<<'\n';
for(int x:ans)
cout<<x<<' ';
cout<<'\n';
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int T; cin>>T;
while(T--)
sol();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3556kb
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
Wrong Answer
time: 29ms
memory: 3580kb
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...
output:
2 2 32 7 3 4 14 22 28 36 40 3 22 46 64 8 1 7 20 24 30 36 54 63 3 3 14 30 6 1 7 11 30 41 47 4 14 27 34 47 2 42 65 1 27 1 9 1 62 5 24 33 42 47 60 2 3 31 3 11 19 29 3 2 15 33 3 25 30 42 3 2 17 59 4 1 11 21 32 2 53 65 3 49 58 65 3 43 60 78 1 78 4 1 11 15 21 5 3 7 17 36 48 2 1 44 ...
result:
wrong answer There is at least one stripe covering black cell 16 (test case 49)