QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#584216 | #6409. Classical Data Structure Problem | ship2077 | WA | 1ms | 3968kb | C++23 | 1.7kb | 2024-09-23 10:28:51 | 2024-09-23 10:28:51 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
mt19937 mt(time(0));
constexpr int M=1e6+5;
int n,m,lim,ans,num,rt;
struct Treap{
int ls,rs,val;
unsigned int sum1,sum2,val1,val2,rnd;
}tr[M];
int read(){
int x=0;char ch=getchar();
while (!isdigit(ch)) ch=getchar();
while (isdigit(ch)) x=x*10+ch-48,ch=getchar();
return x;
}
void pushup(int x){
tr[x].sum1=tr[tr[x].ls].sum1+tr[tr[x].rs].sum1+tr[x].val1;
tr[x].sum2=tr[tr[x].ls].sum2+tr[tr[x].rs].sum2+tr[x].val2;
}
void split(int now,int k,int &x,int &y){
if (!now) return x=y=0,void();
if (tr[now].val<=k) x=now,split(tr[x].rs,k,tr[x].rs,y);
else y=now,split(tr[y].ls,k,x,tr[y].ls); pushup(now);
}
int merge(int x,int y){
if (!x||!y) return x|y;
if (tr[x].rnd<tr[y].rnd){
tr[x].rs=merge(tr[x].rs,y);
return pushup(x),x;
}
tr[y].ls=merge(x,tr[y].ls);
return pushup(y),y;
}
int new_node(unsigned int a,unsigned int b,int k){
tr[++num].val=k;tr[num].rnd=mt();
tr[num].sum1=tr[num].val1=a;
tr[num].sum2=tr[num].val2=b;
return num;
}
void insert(int p,int c){
int x,y; split(rt,p,x,y);
rt=merge(merge(x,new_node(1u*c,1u*p*c,p)),y);
}
unsigned int getans(int l,int r){
int x,y,z;
split(rt,r,x,z);
unsigned int ansr=(r+1)*tr[x].sum1-tr[x].sum2;
split(x,l-1,x,y);
unsigned int ansl=l*tr[x].sum1-tr[x].sum2;
rt=merge(merge(x,y),z);return ansr-ansl;
}
int main(){
n=read();m=read();lim=1<<m;
for (int i=1;i<=n;i++){
int l=read(),r=read();
l=(l+ans)%lim;r=(r+ans)%lim;
if (l>r) swap(l,r);
insert(l,i);insert(r+1,-i);
ans+=getans(l,r);
}
printf("%d\n",ans%(1<<30));
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3900kb
input:
5 2 2 1 1 3 3 2 1 0 0 2
output:
87
result:
ok 1 number(s): "87"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3892kb
input:
1 1 1 1
output:
1
result:
ok 1 number(s): "1"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3828kb
input:
1 2 3 1
output:
3
result:
ok 1 number(s): "3"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3828kb
input:
1 5 31 15
output:
17
result:
ok 1 number(s): "17"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3836kb
input:
1 20 366738 218765
output:
147974
result:
ok 1 number(s): "147974"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3896kb
input:
1 30 86669484 41969116
output:
44700369
result:
ok 1 number(s): "44700369"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3896kb
input:
10 5 20 31 2 2 14 18 13 25 26 4 22 9 15 9 19 16 15 27 9 20
output:
1414
result:
ok 1 number(s): "1414"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3952kb
input:
100 10 245 987 817 813 743 560 548 504 116 479 223 199 775 998 126 542 791 823 96 318 69 349 0 584 245 601 119 513 93 820 115 307 838 978 249 767 433 287 240 8 22 683 169 720 395 592 903 866 919 652 510 563 858 345 938 250 550 239 981 7 784 926 212 644 272 365 490 871 470 987 571 53 65 593 515 370 1...
output:
20383734
result:
ok 1 number(s): "20383734"
Test #9:
score: 0
Accepted
time: 1ms
memory: 3960kb
input:
1000 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1...
output:
190098735
result:
ok 1 number(s): "190098735"
Test #10:
score: 0
Accepted
time: 1ms
memory: 3968kb
input:
1000 5 8 18 31 28 19 3 15 28 5 22 19 1 26 27 17 17 5 26 6 27 10 6 5 2 3 19 6 6 28 16 17 16 0 21 7 31 13 25 13 10 28 30 0 13 21 5 2 9 25 28 4 18 31 13 1 26 30 3 5 8 19 16 22 10 15 17 3 25 6 27 18 26 27 1 26 29 18 21 14 20 5 1 26 9 7 13 19 25 15 11 24 17 12 28 24 17 4 27 20 27 31 18 25 17 1 28 5 0 16 ...
output:
794181769
result:
ok 1 number(s): "794181769"
Test #11:
score: -100
Wrong Answer
time: 1ms
memory: 3964kb
input:
1000 10 732 399 190 578 491 867 330 55 113 400 34 734 790 927 201 156 107 359 790 398 401 523 634 505 570 305 281 513 551 35 610 33 231 330 833 756 213 444 412 315 139 165 533 21 35 977 319 884 894 72 149 667 16 538 282 860 850 550 100 99 801 138 159 34 468 852 840 853 368 994 469 906 393 298 464 89...
output:
311555440
result:
wrong answer 1st numbers differ - expected: '755182648', found: '311555440'