QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#745879 | #9733. Heavy-light Decomposition | vision# | WA | 3ms | 14440kb | C++20 | 1.6kb | 2024-11-14 12:08:59 | 2024-11-14 12:09:00 |
Judging History
answer
#include <bits/stdc++.h>
#define int long long
#define lson k<<1
#define rson (k<<1)|1
#define debug cout<<666<<endl;
using namespace std;
const int N=1e6+5;
int l[N],r[N],a[N];
bool cmp(int a,int b)
{
return r[a]-l[a]+1>r[b]-l[b]+1;
}
int n,k;
int id;
int fa[N];
int ne[N];
int dfs(int u,int dep)
{
if(id>k) return -1;
if(ne[u]==0)
{
return -1;
}
if(dep>r[a[id]]-l[a[id]]+1)
{
for(int i=id;i<=k;i++)
{
int la=u;
for(int j=l[a[i]];j<=r[a[i]];j++)
{
fa[j]=la;
la=j;
}
}
return 1;
}
while(id<=k&&dep==r[a[id]]-l[a[id]]+1)
{
int la=u;
for(int i=l[a[id]];i<=r[a[id]];i++)
{
fa[i]=la;
la=i;
}
id++;
}
return dfs(ne[u],dep-1);
}
void vision()
{
cin>>n>>k;
int ma=0;
int cnt=0;
for(int i=1;i<=k;i++)
{
cin>>l[i]>>r[i];
a[i]=i;
}
sort(a+1,a+1+k,cmp);
for(int i=l[a[1]];i<=r[a[1]];i++)
{
ne[i]=i+1;
fa[i]=i-1;
}
fa[l[a[1]]]=0;
ne[r[a[1]]]=0;
id=2;
// cout<<a[1]<<"\n";
if(k!=1&&dfs(l[a[1]],r[a[1]]-l[a[1]]+1)==-1) cout<<"IMPOSSIBLE\n";
else
{
for(int i=1;i<=n;i++) cout<<fa[i]<<" ",fa[i]=0,ne[i]=0;
cout<<"\n";
}
return ;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t=1;
cin>>t;
while(t--){
vision();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 11876kb
input:
3 12 5 1 5 9 11 7 8 6 6 12 12 4 3 1 1 4 4 2 3 2 2 1 1 2 2
output:
0 1 2 3 4 1 1 7 1 9 10 1 2 0 2 2 IMPOSSIBLE
result:
ok Correct. (3 test cases)
Test #2:
score: 0
Accepted
time: 3ms
memory: 14440kb
input:
10 1 1 1 1 100000 1 1 100000 12 4 1 3 4 6 7 9 10 12 6 3 4 6 2 3 1 1 8999 3 1 3000 3001 6000 6001 8999 14 4 1 3 4 6 7 10 11 14 17 5 1 3 4 6 7 10 11 14 15 17 19999 2 1 9999 10000 19999 1 1 1 1 5 3 1 1 2 3 4 5
output:
0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101...
result:
ok Correct. (10 test cases)
Test #3:
score: -100
Wrong Answer
time: 3ms
memory: 14200kb
input:
5 11 5 1 3 4 6 7 8 9 10 11 11 39998 4 1 10000 10001 20000 20001 30000 30001 39998 49000 5 1 10000 39999 49000 10001 20000 20001 30000 30001 39998 16 5 1 1 2 3 4 6 7 11 12 16 10 5 1 2 3 4 5 6 7 8 9 10
output:
IMPOSSIBLE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99...
result:
wrong answer Case 1, jury find a solution while participant not. (test case 1)