QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#746943 | #9733. Heavy-light Decomposition | Golem__# | AC ✓ | 4ms | 6256kb | C++20 | 3.4kb | 2024-11-14 15:55:29 | 2024-11-14 15:55:29 |
Judging History
answer
#include<random>
#include<iostream>
#include<iomanip>
#include<ctime>
#include<cmath>
#include<cctype>
#include<cstdio>
#include<cstdlib>
#include<climits>
// #define NDEBUG
#include<cassert>
#include<cstring>
#include<complex>
#include<algorithm>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<bitset>
// #define LL __int128
#define LL long long
#define ULL unsigned LL
#define uint unsigned int
// #define int LL
// #define double long double
#define mkp make_pair
#define par pair<int,int>
#define epb emplace_back
#define psb push_back
#define f(x) ((x).first)
#define s(x) ((x).second)
using namespace std;
#define Lbt(x) ((x)&(-(x)))
#define Swap(x,y) (x^=y^=x^=y)
const int Mxxx=1e5;
inline char gc()
{
// return getchar();
static char buf[Mxxx],*p1=buf,*p2=buf;
return (p1==p2&&(p2=(p1=buf)+fread(buf,1,Mxxx,stdin),p1==p2))?EOF:*p1++;
}
inline char pc(char ch,bool fl=false)
{
// return fl?0:putchar(ch),0;
static char buf[Mxxx],*p1=buf,*p2=buf+Mxxx;
return (fl||((*p1++=ch)&&p1==p2))&&(fwrite(buf,1,p1-buf,stdout),p1=buf),0;
}
#define output pc('!',true)
inline int read()
{
char ch=gc();
int gans=0,gflag=0;
for(;ch<'0'||'9'<ch;ch=gc())gflag|=(ch=='-');
for(;'0'<=ch&&ch<='9';ch=gc())gans=(gans<<1)+(gans<<3)+(ch^48);
return gflag?-gans:gans;
}
template<typename T>
inline char read(T&gans)
{
char ch=gc();
int gflag=0;gans=0;
for(;ch<'0'||'9'<ch;ch=gc())gflag|=(ch=='-');
for(;'0'<=ch&&ch<='9';ch=gc())gans=(gans<<1)+(gans<<3)+(ch^48);
return gans=gflag?-gans:gans,ch;
}
template<typename T>
inline void write(T x)
{
if(x>9)write(x/10);
pc(x%10^48);
}
template<typename T>
inline void writenum(T x,char ch)
{
if(x<0)pc('-'),x=-x;
write(x),pc(ch);
}
inline void writechar(char x,char ch)
{
pc(x),pc(ch);
}
template<typename T>
inline T Max(T x,T y)
{
return x>y?x:y;
}
template<typename T>
inline T Min(T x,T y)
{
return x<y?x:y;
}
template<typename T>
inline T Abs(T x)
{
return x<0?-x:x;
}
template<typename T>
inline void ckmx(T&x,T y)
{
x=Max(x,y);
}
template<typename T>
inline void ckmn(T&x,T y)
{
x=Min(x,y);
}
int TT;
const int Mx=2e5;
int n,K,psl[Mx+5],psr[Mx+5];
int tt[Mx+5],ans[Mx+5];
signed main()
{
#ifndef ONLINE_JUDGE
freopen("_.in","r",stdin);
// freopen("_.out","w",stdout);
#endif
int i,j,k,l,f,mx,rt,lf;
for(TT=read();TT;TT--)
{
n=read();K=read();
for(i=1;i<=n;i++)tt[i]=0;
for(i=1;i<=K;i++)psl[i]=read(),psr[i]=read();
for(i=1;i<=K;i++)tt[psr[i]-psl[i]+1]++;
for(i=1;i<=n;i++)if(tt[i])mx=i;
f=0;for(i=1;i<mx-1;i++)f|=tt[i];
if(tt[mx]^1&&!f)output,puts("IMPOSSIBLE");
else
{
for(i=1;i<=K;i++)if(psr[i]-psl[i]+1==mx)break;
assert(i<=K);rt=psl[i];lf=psr[i];
for(j=psr[i];j>psl[i];j--)ans[j]=j-1;
ans[j]=0;
for(j=1;j<=K;j++)if(i^j)
{
l=psr[j]-psl[j]+1;
for(k=psr[j];k>psl[j];k--)ans[k]=k-1;
ans[k]=lf-Min(l,mx-1);
}
for(i=1;i<=n;i++)writenum(ans[i],i==n?10:32);
}
}
return output;
}
/*
1 9 4
1 3
4 6
7 8
9 9
*/
/*
1 8 3
1 3
4 6
7 8
*/
/*
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
*/
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5636kb
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 4 3 7 2 9 10 4 2 0 2 2 IMPOSSIBLE
result:
ok Correct. (3 test cases)
Test #2:
score: 0
Accepted
time: 3ms
memory: 6256kb
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: 0
Accepted
time: 2ms
memory: 4100kb
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:
0 1 2 1 4 5 1 7 1 9 2 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 ...
result:
ok Correct. (5 test cases)
Test #4:
score: 0
Accepted
time: 3ms
memory: 5800kb
input:
10000 20 6 17 20 7 9 1 3 4 6 10 12 13 16 20 12 7 7 4 4 10 10 8 8 3 3 1 1 6 6 2 2 5 5 11 11 12 20 9 9 20 16 11 11 5 6 9 9 2 2 12 12 1 1 18 20 8 8 15 15 13 13 16 17 10 10 14 14 3 3 4 4 7 7 20 16 6 7 10 10 13 13 18 18 19 19 14 14 1 1 20 20 8 8 4 5 9 9 2 3 12 12 11 11 16 17 15 15 20 5 1 1 6 6 7 12 13 20...
output:
IMPOSSIBLE 19 19 19 19 19 19 19 19 19 19 19 0 12 13 14 15 16 17 18 19 19 19 19 19 18 5 19 19 19 19 19 19 19 19 19 18 16 0 18 19 IMPOSSIBLE 19 16 2 3 4 19 14 7 8 9 10 11 0 13 14 15 16 17 18 19 IMPOSSIBLE 19 13 2 3 4 5 6 7 0 9 10 11 12 13 14 15 16 17 18 19 16 1 2 3 16 5 6 7 19 0 10 11 12 13 14 15 16 1...
result:
ok Correct. (10000 test cases)
Test #5:
score: 0
Accepted
time: 0ms
memory: 5720kb
input:
20000 13 12 12 12 7 7 1 1 5 5 9 9 8 8 13 13 4 4 3 3 6 6 10 11 2 2 16 8 4 4 5 5 1 1 6 6 7 7 3 3 8 16 2 2 20 17 19 19 1 1 17 18 14 14 4 4 13 13 7 7 5 5 11 11 15 15 16 16 20 20 12 12 9 10 8 8 2 3 6 6 17 9 3 4 2 2 9 10 7 8 5 6 11 12 1 1 15 17 13 14 6 2 2 6 1 1 1 1 1 1 10 2 5 10 1 4 17 17 3 3 12 12 15 15...
output:
10 10 10 10 10 10 10 10 10 0 10 10 10 15 15 15 15 15 15 15 0 8 9 10 11 12 13 14 15 IMPOSSIBLE 16 16 15 3 15 5 15 7 15 9 15 11 15 13 0 15 16 5 0 2 3 4 5 0 6 1 2 3 0 5 6 7 8 9 IMPOSSIBLE 0 1 2 3 4 5 6 7 8 9 10 11 12 13 IMPOSSIBLE IMPOSSIBLE 15 15 15 15 0 5 6 7 8 9 10 11 12 13 14 15 0 1 IMPOSSIBLE IMPO...
result:
ok Correct. (20000 test cases)
Test #6:
score: 0
Accepted
time: 4ms
memory: 5764kb
input:
50000 1 1 1 1 4 3 1 1 4 4 2 3 9 9 1 1 5 5 8 8 9 9 7 7 2 2 3 3 6 6 4 4 4 2 1 2 3 4 2 2 1 1 2 2 1 1 1 1 10 2 1 7 8 10 8 8 4 4 5 5 6 6 8 8 3 3 1 1 2 2 7 7 7 7 7 7 4 4 5 5 2 2 3 3 1 1 6 6 10 2 8 10 1 7 8 1 1 8 2 1 1 2 9 4 1 2 5 6 7 9 3 4 7 1 1 7 7 2 1 1 2 7 4 2 1 1 2 4 6 3 3 6 1 1 2 2 3 3 3 3 1 1 2 2 1 ...
output:
0 2 0 2 2 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 0 1 2 3 4 5 6 4 8 9 IMPOSSIBLE IMPOSSIBLE 0 1 2 3 4 5 6 4 8 9 0 1 2 3 4 5 6 7 0 1 7 1 7 3 7 5 0 7 8 0 1 2 3 4 5 6 6 0 2 3 4 5 6 3 0 2 3 5 5 0 3 4 5 IMPOSSIBLE 0 3 3 0 3 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE 0 1 1 1 3 3 0 3 3 IMPOSSIBL...
result:
ok Correct. (50000 test cases)
Test #7:
score: 0
Accepted
time: 0ms
memory: 5892kb
input:
100 2619 693 286 286 81 81 552 552 397 397 24 24 414 414 378 378 660 660 538 538 125 125 190 190 585 585 180 180 564 564 218 218 158 158 425 425 189 189 94 94 29 29 678 678 543 543 352 352 659 659 467 467 403 403 298 298 517 517 196 196 156 156 278 278 259 259 417 417 499 499 246 246 195 195 380 380...
output:
2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 ...
result:
ok Correct. (100 test cases)
Test #8:
score: 0
Accepted
time: 4ms
memory: 5088kb
input:
100 53984 965 9577 9632 53593 53648 17305 17360 40321 40376 37465 37520 45753 45808 52921 52976 21281 21336 44241 44296 17921 17976 40545 40600 7897 7952 9689 9744 32089 32144 43345 43400 46817 46872 4817 4872 24585 24640 41889 41944 36065 36120 3585 3640 1486 1540 29793 29848 8065 8120 43401 43456 ...
output:
IMPOSSIBLE IMPOSSIBLE 35758 1 2 3 4 5 35763 35762 8 35759 10 11 12 13 35763 35763 35763 35762 18 35763 35763 35762 22 35763 35763 35763 35763 35763 35761 29 30 35762 32 35763 35761 35 36 35763 35754 39 40 41 42 43 44 45 46 47 35762 49 35763 35763 35763 35760 54 55 56 35761 58 59 35763 35760 62 63 64...
result:
ok Correct. (100 test cases)
Test #9:
score: 0
Accepted
time: 3ms
memory: 5424kb
input:
2 100000 72281 52926 52926 1645 1646 33266 33266 88480 88480 16983 16983 29975 29977 32528 32528 89186 89186 5810 5810 90512 90512 8859 8859 22671 22671 51648 51649 26506 26506 99017 99018 64526 64526 61453 61454 73914 73914 27338 27339 43510 43510 22298 22300 59714 59714 64394 64395 71955 71956 481...
output:
25155 25153 2 3 25155 25155 25154 7 25155 25153 10 11 25155 25155 25155 25154 16 25152 18 19 20 25155 25153 23 24 25154 26 25155 25155 25155 25155 25155 25155 25155 25155 25154 36 25153 38 39 25155 25155 25155 25155 25154 45 25154 47 25153 49 50 25155 25155 25155 25155 25155 25155 25155 25155 25154 ...
result:
ok Correct. (2 test cases)
Test #10:
score: 0
Accepted
time: 2ms
memory: 3696kb
input:
100000 2 1 1 2 2 1 1 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 2 2 2 1 1 2 2 1 1 2 2 2 2 1 1 2 2 2 2 1 1 2 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 2 1 1 2 2 2 2 2 2 1 1 2 1 1 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 2 2 1 1 2 1 1 2 2 2 1 1 2 2 2 2 1 1 2 2 2 1 1 2 2 2 2 2 1 1 2 2 2 2 1 1 2 2 1 1 2 2 2 1 1 2 2 2 1...
output:
0 1 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0 1 IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE IMPOSSIBLE 0...
result:
ok Correct. (100000 test cases)
Test #11:
score: 0
Accepted
time: 0ms
memory: 5876kb
input:
100000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok Correct. (100000 test cases)
Test #12:
score: 0
Accepted
time: 4ms
memory: 3788kb
input:
100000 2 1 1 2 3 1 1 3 5 2 1 1 2 5 4 4 2 2 4 4 3 3 1 1 3 3 1 1 3 3 2 2 5 1 1 5 1 1 1 1 3 2 1 1 2 3 5 5 5 5 2 2 3 3 4 4 1 1 3 3 3 3 1 1 2 2 5 4 3 4 1 1 2 2 5 5 4 3 2 2 1 1 3 4 1 1 1 1 4 1 1 4 5 4 3 4 2 2 1 1 5 5 3 1 1 3 3 3 1 1 3 3 2 2 5 1 1 5 1 1 1 1 2 2 2 2 1 1 5 1 1 5 1 1 1 1 2 2 2 2 1 1 4 2 4 4 1...
output:
0 1 0 1 2 4 0 2 3 4 IMPOSSIBLE IMPOSSIBLE 0 1 2 3 4 0 2 0 2 IMPOSSIBLE IMPOSSIBLE 3 3 0 3 3 3 3 0 3 0 0 1 2 3 3 3 0 3 3 0 1 2 IMPOSSIBLE 0 1 2 3 4 0 IMPOSSIBLE 0 1 2 3 4 0 IMPOSSIBLE 0 1 2 2 4 4 0 3 4 0 1 1 IMPOSSIBLE IMPOSSIBLE 0 3 1 0 3 4 0 IMPOSSIBLE 4 4 0 3 4 0 1 2 3 3 0 3 0 0 IMPOSSIBLE 0 1 2 1...
result:
ok Correct. (100000 test cases)
Test #13:
score: 0
Accepted
time: 3ms
memory: 3688kb
input:
5000 50 26 5 6 9 10 1 1 23 24 43 44 19 20 29 30 2 2 17 18 47 48 3 4 35 36 27 28 25 26 49 50 31 32 45 46 15 16 39 40 21 22 11 12 13 14 37 38 33 34 7 8 41 42 86 12 17 20 33 36 41 86 1 3 4 6 13 16 25 28 37 40 29 32 21 24 7 9 10 12 59 35 5 5 6 6 22 22 31 31 32 32 25 25 21 21 20 20 26 26 2 2 34 34 3 3 35...
output:
IMPOSSIBLE 83 1 2 83 4 5 83 7 8 83 10 11 82 13 14 15 82 17 18 19 82 21 22 23 82 25 26 27 82 29 30 31 82 33 34 35 82 37 38 39 0 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 58 58 58 58 58 58 58 58 58 58 58 58 58...
result:
ok Correct. (5000 test cases)
Test #14:
score: 0
Accepted
time: 4ms
memory: 5828kb
input:
5000 335 22 13 18 134 140 85 91 50 56 7 12 31 36 113 119 71 77 106 112 1 6 37 42 64 70 92 98 43 49 120 126 127 133 99 105 25 30 141 335 19 24 57 63 78 84 475 21 40 42 22 24 37 39 16 18 7 9 31 33 49 51 43 45 52 54 19 21 1 2 55 57 10 12 5 6 58 475 28 30 13 15 25 27 34 36 3 4 46 48 252 159 138 138 77 7...
output:
329 1 2 3 4 5 329 7 8 9 10 11 329 13 14 15 16 17 329 19 20 21 22 23 329 25 26 27 28 29 329 31 32 33 34 35 329 37 38 39 40 41 328 43 44 45 46 47 48 328 50 51 52 53 54 55 328 57 58 59 60 61 62 328 64 65 66 67 68 69 328 71 72 73 74 75 76 328 78 79 80 81 82 83 328 85 86 87 88 89 90 328 92 93 94 95 96 97...
result:
ok Correct. (5000 test cases)
Test #15:
score: 0
Accepted
time: 2ms
memory: 5832kb
input:
1000 89 19 17 18 7 8 11 12 1 1 27 28 35 89 13 14 15 16 25 26 9 10 31 32 3 4 33 34 29 30 19 20 23 24 5 6 21 22 2 2 962 187 886 890 361 365 376 380 766 770 901 905 181 185 626 630 921 925 86 90 416 420 281 285 506 510 171 175 41 45 776 780 441 445 491 495 341 345 631 635 141 145 356 360 891 895 231 23...
output:
88 88 87 3 87 5 87 7 87 9 87 11 87 13 87 15 87 17 87 19 87 21 87 23 87 25 87 27 87 29 87 31 87 33 0 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 958 1 2 3 958 5 6 7 958 9 10 11 958 13...
result:
ok Correct. (1000 test cases)
Test #16:
score: 0
Accepted
time: 4ms
memory: 5840kb
input:
500 4037 286 1756 1768 2770 2782 3095 3107 1405 1417 2705 2717 2913 2925 1847 1859 482 494 807 819 2744 2756 2822 2834 2276 2288 3238 3250 1106 1118 2055 2067 3056 3068 2328 2340 2146 2158 1249 1261 1015 1027 2224 2236 1613 1625 1717 1729 222 234 3329 3341 1795 1807 2354 2366 37 48 3082 3094 2068 20...
output:
4025 1 2 3 4 5 6 7 8 9 10 11 4025 13 14 15 16 17 18 19 20 21 22 23 4025 25 26 27 28 29 30 31 32 33 34 35 4025 37 38 39 40 41 42 43 44 45 46 47 4025 49 50 51 52 53 54 55 56 57 58 59 4025 61 62 63 64 65 66 67 68 69 70 71 4025 73 74 75 76 77 78 79 80 81 82 83 4025 85 86 87 88 89 90 91 92 93 94 95 4025 ...
result:
ok Correct. (500 test cases)
Extra Test:
score: 0
Extra Test Passed