QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#39920 | #2832. Graph Theory | hit47 | WA | 184ms | 15236kb | C++ | 1.9kb | 2022-07-14 20:23:14 | 2022-07-14 20:23:15 |
Judging History
answer
#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m;
ll tree[800010];
bool lan[800010];
struct seg{
ll l,r,len;
};
seg a[200010];
bool cmp(seg x,seg y)
{
return x.len<y.len;
}
void build(ll root, ll l, ll r){
tree[root] = 0;
lan[root] = 0;
if(l == r) return ;
ll mid = l + r >> 1;
build(root << 1, l, mid);
build(root << 1 | 1, mid + 1, r);
}
void update(ll root,ll l,ll r,ll left,ll right)
{
if(lan[root])
{
if(l!=r)lan[root<<1]=lan[root<<1 | 1]=1;
lan[root]=0;
if(l!=r)tree[root<<1]=tree[root<<1 | 1]=1;
}
if(l>=left && r<=right)
{
if(l!=r)lan[root]=1;tree[root]=1;
return;
}
if(l>right || r<left)return;
ll mid=l+r>>1;
update(root<<1,l,mid,left,right);
update(root<<1 | 1,mid+1,r,left,right);
tree[root]=tree[root<<1]&tree[root<<1 | 1];
}
bool query(ll root,ll l,ll r,ll left,ll right)
{
if(lan[root])
{
if(l!=r)lan[root<<1]=lan[root<<1 | 1]=1;
lan[root]=0;
if(l!=r)tree[root<<1]=tree[root<<1 | 1]=1;
}
if(l>=left && r<=right)return !tree[root];
if(l>right || r<left)return 0;
ll mid=l+r>>1;
return query(root<<1,l,mid,left,right) | query(root<<1 | 1,mid+1,r,left,right);
}
int main()
{
int i;
while(scanf("%lld%lld",&n,&m)!=EOF)
{
build(1, 1, n);
for(i=1;i<=m;++i)
{
scanf("%lld%lld",&a[i].l,&a[i].r);
if(a[i].l>a[i].r)swap(a[i].l,a[i].r);
a[i].len=min(a[i].r-a[i].l,n-(a[i].r-a[i].l));
}
sort(a+1,a+m+1,cmp);
ll ans=0;
for(i=1;i<=m;++i)
{
if(a[i].len==0)continue;
if(a[i].r-a[i].l==a[i].len)
{
if(query(1,1,n,a[i].l,a[i].r-1))ans=a[i].len;
update(1,1,n,a[i].l,a[i].r-1);
}
else
{
if(((a[i].l==1)||query(1,1,n,1,a[i].l-1)) || query(1,1,n,a[i].r,n))
ans=max(a[i].len,ans);
if(a[i].l!=1)update(1,1,n,1,a[i].l-1);
update(1,1,n,a[i].r,n);
}
}
if(query(1,1,n,1,n))ans=n-a[m].len;
printf("%lld\n",n-ans);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 5744kb
input:
3 2 1 2 2 3 3 2 1 1 2 2 3 3 1 2 2 3 3 1
output:
1 0 2
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 1ms
memory: 5748kb
input:
2 1 1 2
output:
1
result:
ok single line: '1'
Test #3:
score: 0
Accepted
time: 34ms
memory: 5776kb
input:
17 17 6 10 1 9 14 6 12 13 5 4 15 17 14 15 6 5 10 6 10 11 2 9 9 6 17 15 9 15 4 8 1 4 13 15 13 19 11 10 12 10 10 5 2 8 12 11 8 3 1 7 10 9 8 5 1 5 9 4 8 7 12 10 6 8 13 1 5 8 11 5 10 8 7 7 16 14 9 5 8 1 4 16 10 8 16 15 15 1 13 5 9 3 4 4 9 7 7 2 5 4 5 11 9 14 5 13 1 5 4 5 4 1 4 4 1 1 5 3 3 5 4 1 3 2 5 1 ...
output:
8 6 8 2 1 2 7 6 2 6 2 9 10 10 8 10 3 8 7 7 9 10 4 8 6 8 2 2 2 6 6 5 5 4 2 9 4 1 9 6 9 2 6 4 1 2 1 3 6 8 8 6 3 4 7 6 3 8 1 5 3 2 1 5 8 5 7 5 6 7 10 9 3 2 6 7 4 5 6 6 5 1 4 2 4 1 9 7 3 9 4 6 7 5 7 6 1 5 8 5 6 4 5 3 3 7 7 6 9 2 7 3 3 7 10 7 1 2 2 6 6 7 8 7 2 5 1 3 7 2 1 9 9 5 9 5 2 3 1 6 6 3 8 6 1 8 3 ...
result:
ok 10000 lines
Test #4:
score: 0
Accepted
time: 43ms
memory: 7816kb
input:
190 27 72 104 45 123 187 67 105 21 52 179 141 79 107 23 111 166 27 186 35 15 1 59 48 67 105 153 51 92 92 178 149 98 86 153 144 100 13 100 186 91 124 153 24 116 75 15 105 18 137 52 150 129 109 100 106 100 15 36 52 105 7 19 40 62 19 95 26 90 67 55 14 104 90 45 59 41 78 61 100 96 77 55 75 85 13 76 50 1...
output:
95 53 25 77 43 78 94 14 83 35 24 70 46 17 12 38 6 19 21 68 45 87 40 28 38 52 11 10 11 26 48 80 92 48 94 56 12 22 19 1 45 60 9 59 82 44 12 85 24 34 25 90 71 60 43 16 74 9 36 83 19 54 37 76 82 53 21 30 18 86 15 91 63 45 18 22 13 53 71 49 77 67 25 58 44 67 28 87 44 6 67 12 34 93 12 33 21 67 69 100 96 7...
result:
ok 1000 lines
Test #5:
score: 0
Accepted
time: 60ms
memory: 7748kb
input:
631 403 564 132 336 393 68 11 23 519 24 399 463 382 550 163 557 333 404 578 139 46 576 72 207 424 408 224 509 551 12 389 119 490 239 462 531 363 295 607 87 91 525 469 493 133 22 450 325 557 348 29 594 380 495 540 45 387 452 64 562 585 539 403 516 212 511 153 347 186 59 51 475 453 426 463 363 570 127...
output:
315 105 859 936 348 811 510 237 852 571 482 496 996 192 445 19 840 235 569 915 267 977 587 468 574 461 412 436 89 794 314 656 693 794 640 15 43 885 667 891 559 237 275 268 43 774 197 914 510 817 264 406 813 781 657 410 665 193 523 943 846 427 985 200 592 786 502 804 308 615 395 814 455 585 990 93 27...
result:
ok 100 lines
Test #6:
score: 0
Accepted
time: 114ms
memory: 11908kb
input:
33612 200000 24258 24258 16589 16578 27435 27434 12485 12483 27768 27779 25352 25365 7899 7890 21677 21679 18384 18403 8639 8647 25720 25731 12560 12553 6818 6821 6737 6721 756 738 24289 24278 25287 25299 15980 15968 30378 30385 16423 16439 8410 8430 13605 13623 8786 8779 15942 15943 8070 8086 1114 ...
output:
20
result:
ok single line: '20'
Test #7:
score: 0
Accepted
time: 160ms
memory: 14844kb
input:
200000 200000 108194 108177 107888 107907 151974 151986 145582 145564 160644 160655 6520 6512 27546 27560 54120 54109 23774 23761 139151 139169 3715 3704 37270 37261 27979 27961 68030 68029 172350 172337 136551 136539 71687 71702 72681 72683 170998 171009 102032 102015 86070 86050 49785 49795 70532 ...
output:
20
result:
ok single line: '20'
Test #8:
score: 0
Accepted
time: 148ms
memory: 15236kb
input:
200000 200000 58978 58965 179601 179599 46881 46885 85872 85892 35453 35444 48837 48846 169811 169812 4905 4924 67871 67891 33498 33485 80041 80044 8614 8597 102554 102541 171922 171932 62674 62672 107682 107674 35596 35578 172014 172010 99018 99003 66233 66216 135849 135865 176225 176211 149831 149...
output:
199980
result:
ok single line: '199980'
Test #9:
score: 0
Accepted
time: 128ms
memory: 9968kb
input:
2619 200000 91 2546 2167 2178 1378 1382 2607 101 1142 1142 1426 1254 284 391 633 612 796 815 1279 1252 462 289 2341 2497 2249 2414 1888 1808 795 613 644 704 107 220 906 865 1820 1871 64 21 2035 2127 934 1128 1898 1707 2521 2593 2483 2532 1056 1006 2058 2085 5 2579 1875 2017 1930 1857 1365 1510 1373 ...
output:
200
result:
ok single line: '200'
Test #10:
score: 0
Accepted
time: 184ms
memory: 14104kb
input:
200000 200000 77541 77668 193849 193974 4353 4529 126362 126199 170504 170429 79476 79313 137113 137023 18179 17981 86106 85988 150401 150435 77291 77232 4807 4752 33154 33321 44592 44553 51663 51607 125340 125332 161780 161964 170246 170105 136712 136881 12249 12121 56432 56489 59541 59740 193372 1...
output:
200
result:
ok single line: '200'
Test #11:
score: -100
Wrong Answer
time: 175ms
memory: 14948kb
input:
200000 200000 144945 144926 43570 43483 102995 103184 48655 48633 100760 100735 21871 21758 186954 186754 106156 105971 117724 117552 93684 93784 185343 185268 169480 169516 153231 153347 188641 188643 174891 174950 184805 184692 55358 55429 143290 143290 18832 18932 1717 1685 76283 76399 140911 141...
output:
199924
result:
wrong answer 1st lines differ - expected: '199931', found: '199924'