QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#412891 | #8672. 排队 | g1ove | 15 | 329ms | 58792kb | C++14 | 2.1kb | 2024-05-16 21:12:52 | 2024-05-16 21:12:53 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define N 1000005
using namespace std;
const int inf=1e9;
int n,m;
int l[N],r[N];
int stk[N],top;
struct segtree{
int tr[N*4],lz[N*4];
void Pushup(int x)
{
tr[x]=min(tr[x*2],tr[x*2+1]);
}
void Pushdown(int x)
{
if(!lz[x]) return;
tr[x*2]+=lz[x];
tr[x*2+1]+=lz[x];
lz[x*2]+=lz[x];
lz[x*2+1]+=lz[x];
lz[x]=0;
}
void modify(int l,int r,int L,int R,int x,int v)
{
if(l>R||r<L) return;
if(l>=L&&r<=R)
{
tr[x]+=v;
lz[x]+=v;
return;
}
int mid=(l+r)/2;
Pushdown(x);
modify(l,mid,L,R,x*2,v);
modify(mid+1,r,L,R,x*2+1,v);
Pushup(x);
}
int check(int l,int r,int L,int R,int x)
{
if(l>R||r<L) return inf;
if(l==r) return l;
int mid=(l+r)/2;
Pushdown(x);
int v=inf;
if(tr[x*2]<=0) v=check(l,mid,L,R,x*2);
else if(tr[x*2+1]<=0) v=check(mid+1,r,L,R,x*2+1);
return v;
}
int query(int l,int r,int p,int x)
{
if(l==r) return tr[x];
int mid=(l+r)/2;
Pushdown(x);
if(p<=mid) return query(l,mid,p,x*2);
else return query(mid+1,r,p,x*2+1);
}
}tr1,tr2,tr3;
int ans[N];
struct node{
int p,id;
};
vector<node> E[N];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d%d",&l[i],&r[i]),
tr1.modify(1,n,i,i,1,inf),
tr2.modify(1,n,i,i,1,inf);
for(int i=1;i<=m;i++)
{
int l,r;
scanf("%d%d",&l,&r);
E[l].push_back((node){r,i});
}
for(int i=n;i>=1;i--)
{
tr1.modify(1,n,i,i,1,-inf);
tr2.modify(1,n,i,i,1,-inf);
tr1.modify(1,n,i,i,1,l[i]);
tr2.modify(1,n,i,i,1,r[i]+1);
while(1)
{
int l1=tr1.check(1,n,i,n,1),l2=tr2.check(1,n,i,n,1);
if(l1==inf&&l2==inf) break;
if(l1<l2)
{
tr1.modify(1,n,l1,l1,1,1e9);
tr1.modify(1,n,l1+1,n,1,-1);
tr2.modify(1,n,l1+1,n,1,-1);
tr3.modify(1,n,l1,n,1,1);
}
else
{
tr1.modify(1,n,l2,l2,1,1e9);
tr1.modify(1,n,l2+1,n,1,1);
tr2.modify(1,n,l2+1,n,1,1);
tr3.modify(1,n,l1,n,1,-1);
}
}
for(auto u:E[i]) ans[u.id]=tr3.query(1,n,u.p,1);
}
for(int i=1;i<=m;i++) printf("%d\n",ans[i]);
return 0;
}
详细
Subtask #1:
score: 0
Time Limit Exceeded
Test #1:
score: 10
Accepted
time: 0ms
memory: 36000kb
input:
3 3 0 0 1 2 0 2 1 1 1 3 2 3
output:
1 3 1
result:
ok 3 number(s): "1 3 1"
Test #2:
score: 0
Time Limit Exceeded
input:
5000 5000 5 10 3 9 3 8 2 7 2 5 3 6 1 5 0 2 7 8 2 10 0 3 3 6 4 6 1 6 4 8 7 8 2 7 3 4 4 9 7 8 2 9 2 5 3 6 0 5 6 7 1 2 2 4 2 10 1 5 7 9 6 9 2 3 9 10 5 5 2 9 3 3 2 7 2 4 0 6 0 3 1 7 7 7 4 8 2 9 4 8 0 10 1 8 1 1 2 7 5 9 1 7 1 7 1 4 2 4 1 4 2 9 1 7 4 7 3 8 1 3 4 6 1 5 1 6 0 0 3 9 4 7 2 8 1 8 1 2 7 8 2 7 2...
output:
result:
Subtask #2:
score: 0
Time Limit Exceeded
Test #12:
score: 0
Time Limit Exceeded
input:
200000 200000 3 6 3 3 6 10 1 7 2 7 6 9 4 6 3 4 0 8 0 6 3 5 3 4 1 8 7 8 4 5 0 3 1 5 2 9 1 2 1 2 3 4 5 7 6 10 3 9 4 7 1 6 2 6 1 7 2 5 1 7 6 8 1 1 0 7 7 8 0 9 1 7 3 8 3 7 1 2 4 8 5 6 0 6 5 6 2 7 2 6 0 6 0 6 1 7 2 5 0 3 0 3 7 10 3 8 0 2 3 4 3 7 4 9 0 6 4 7 2 6 8 10 2 10 4 10 3 3 2 6 4 5 3 9 1 8 1 2 2 9 ...
output:
result:
Subtask #3:
score: 0
Time Limit Exceeded
Test #22:
score: 0
Time Limit Exceeded
input:
200000 200000 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 0 0 9 0 10 0 0 0 0 0 13 0 14 0 0 0 16 0 17 0 18 0 19 0 0 0 21 0 22 0 23 0 0 0 0 0 0 0 0 0 28 0 0 0 30 0 31 0 32 0 33 0 34 0 35 0 0 0 0 0 38 0 39 0 40 0 41 0 42 0 43 0 44 0 45 0 46 0 0 0 48 0 49 0 50 0 51 0 52 0 53 0 54 0 55 0 56 0 57 0 0 0 59 0 60 0 0 0 0 ...
output:
result:
Subtask #4:
score: 15
Accepted
Test #32:
score: 15
Accepted
time: 317ms
memory: 56168kb
input:
200000 200000 0 200000 1 200000 1 200000 0 200000 0 200000 1 200000 1 200000 1 200000 0 200000 1 200000 0 200000 0 200000 1 200000 0 200000 0 200000 0 200000 0 200000 1 200000 0 200000 0 200000 1 200000 0 200000 1 200000 1 200000 1 200000 1 200000 0 200000 0 200000 1 200000 2 200000 1 200000 2 20000...
output:
71224 21392 65746 47218 62293 29293 146310 136621 165312 81582 25124 120262 104926 12518 90915 31784 50073 15588 1517 106447 92329 71506 16694 4846 38213 34902 133281 98867 697 26263 6631 173459 61316 71682 15564 112191 125788 15305 41840 30379 24107 17435 10898 115177 22279 37582 101778 120170 1264...
result:
ok 200000 numbers
Test #33:
score: 15
Accepted
time: 318ms
memory: 55992kb
input:
200000 200000 5 200000 0 200000 1 200000 0 200000 2 200000 1 200000 0 200000 3 200000 4 200000 1 200000 0 200000 2 200000 1 200000 0 200000 0 200000 5 200000 2 200000 0 200000 2 200000 2 200000 0 200000 1 200000 3 200000 4 200000 2 200000 0 200000 5 200000 0 200000 3 200000 0 200000 0 200000 5 20000...
output:
51850 27495 33433 90638 103054 58851 115355 44294 80395 72594 155250 20604 154366 112939 168447 70437 134688 175930 112777 43168 73760 136485 95405 115772 19580 14448 85020 8135 266 66591 24765 14783 101583 182811 27593 75020 64180 50889 69744 140901 99500 62001 74634 142631 93413 188391 25666 29627...
result:
ok 200000 numbers
Test #34:
score: 15
Accepted
time: 329ms
memory: 56340kb
input:
200000 200000 6 200000 3 200000 6 200000 7 200000 2 200000 9 200000 4 200000 3 200000 0 200000 6 200000 3 200000 3 200000 1 200000 8 200000 4 200000 3 200000 5 200000 2 200000 2 200000 2 200000 4 200000 5 200000 6 200000 3 200000 7 200000 1 200000 2 200000 7 200000 2 200000 1 200000 6 200000 1 20000...
output:
48539 120803 28813 145711 29729 172683 112151 52277 31739 73432 63297 64022 176699 103343 145926 110637 5216 25387 86738 39373 77641 3608 134147 26930 117814 50832 9240 59137 73006 34370 34497 804 96016 101388 3489 30001 85307 17852 1324 32486 37351 12503 28321 42856 196324 95124 119392 87948 28069 ...
result:
ok 200000 numbers
Test #35:
score: 15
Accepted
time: 329ms
memory: 58792kb
input:
200000 200000 45 200000 27 200000 7 200000 51 200000 16 200000 10 200000 16 200000 43 200000 12 200000 35 200000 6 200000 77 200000 40 200000 66 200000 30 200000 18 200000 36 200000 12 200000 26 200000 37 200000 39 200000 11 200000 69 200000 57 200000 15 200000 8 200000 19 200000 32 200000 35 200000...
output:
102146 138864 3922 35890 61622 45382 45112 14900 58606 39462 173762 102549 8848 81805 48479 48103 10353 63948 139153 34744 24441 35639 58427 40153 41974 28423 106874 11420 118809 141816 59608 59417 25106 134727 11556 40866 27752 61000 52123 94606 325 144695 24421 115649 156435 132658 25786 136006 18...
result:
ok 200000 numbers
Test #36:
score: 15
Accepted
time: 320ms
memory: 56804kb
input:
200000 200000 894 200000 142 200000 346 200000 496 200000 389 200000 600 200000 650 200000 476 200000 767 200000 220 200000 238 200000 516 200000 137 200000 1 200000 835 200000 34 200000 208 200000 225 200000 377 200000 75 200000 277 200000 278 200000 647 200000 390 200000 179 200000 602 200000 571 ...
output:
82980 71975 66684 28250 111297 44819 114569 54121 107328 25452 72738 53632 23692 426 71363 73241 154868 34365 20278 17775 146745 22972 136874 69984 53 79587 2967 124150 52120 87623 89603 4325 87876 13984 119053 27551 69825 112363 84048 157846 1462 94224 79643 115628 117698 116223 38012 32665 94002 1...
result:
ok 200000 numbers
Test #37:
score: 15
Accepted
time: 274ms
memory: 53120kb
input:
200000 200000 30 200000 9 200000 18 200000 24 200000 68 200000 54 200000 26 200000 3 200000 42 200000 32 200000 27 200000 58 200000 1 200000 34 200000 16 200000 61 200000 11 200000 25 200000 69 200000 48 200000 1 200000 11 200000 51 200000 46 200000 45 200000 48 200000 8 200000 11 200000 76 200000 1...
output:
173724 167565 196183 155627 73842 112798 182774 198559 148707 78823 124508 189149 139326 167284 179483 145557 81468 183248 195819 198503 179022 158694 167743 30007 115871 163056 159742 39661 110436 112768 148610 172927 108963 141742 144742 195300 136697 158981 169064 113954 164065 191476 87872 11760...
result:
ok 200000 numbers
Test #38:
score: 15
Accepted
time: 272ms
memory: 56060kb
input:
200000 200000 4 200000 3 200000 5 200000 9 200000 3 200000 5 200000 3 200000 4 200000 1 200000 7 200000 5 200000 2 200000 2 200000 5 200000 7 200000 0 200000 2 200000 1 200000 6 200000 7 200000 3 200000 4 200000 5 200000 2 200000 2 200000 6 200000 2 200000 8 200000 8 200000 2 200000 2 200000 0 20000...
output:
46615 181434 182190 170634 93896 160383 177806 162444 168792 138030 132992 146565 174737 175152 50188 136539 105800 168041 179972 82742 181959 171407 173501 132587 137393 55914 157218 61659 132609 192152 167976 117558 60445 119612 112065 109544 154984 108960 161879 140516 153475 78686 127811 108796 ...
result:
ok 200000 numbers
Test #39:
score: 15
Accepted
time: 274ms
memory: 56404kb
input:
200000 200000 200 200000 418 200000 690 200000 193 200000 63 200000 799 200000 474 200000 40 200000 287 200000 38 200000 204 200000 334 200000 258 200000 262 200000 269 200000 368 200000 167 200000 30 200000 51 200000 55 200000 119 200000 523 200000 33 200000 896 200000 253 200000 674 200000 119 200...
output:
171189 85389 126329 140440 183837 83618 89897 140242 183271 155531 156556 101126 70897 129804 140582 38794 150678 129225 97071 167132 123699 102800 162069 161274 162407 179233 150750 147270 150942 171716 178973 170764 152580 176935 138712 165104 157524 7651 105384 116173 174996 159737 138067 119161 ...
result:
ok 200000 numbers
Test #40:
score: 15
Accepted
time: 247ms
memory: 52896kb
input:
200000 200000 611 200000 1167 200000 3159 200000 3415 200000 2254 200000 697 200000 6942 200000 23 200000 1856 200000 894 200000 6650 200000 3813 200000 5825 200000 5844 200000 5534 200000 6993 200000 3021 200000 515 200000 1584 200000 2031 200000 265 200000 8912 200000 6889 200000 6934 200000 833 2...
output:
73994 144591 49265 71224 136162 94664 159060 157355 118335 31810 103232 94713 103259 155339 60542 143894 121148 83887 112143 121172 58706 128573 148964 30102 37612 48511 115410 139260 109 43908 122649 126684 199 98137 22165 80600 2 77835 100163 132242 113078 105702 88160 62364 9 91895 58316 158056 1...
result:
ok 200000 numbers
Test #41:
score: 15
Accepted
time: 187ms
memory: 50984kb
input:
200000 200000 3480 200000 36579 200000 10485 200000 18356 200000 20788 200000 3352 200000 4565 200000 33362 200000 6894 200000 25647 200000 5915 200000 19265 200000 3530 200000 26535 200000 18506 200000 18191 200000 35793 200000 7442 200000 993 200000 14550 200000 13606 200000 5553 200000 12284 2000...
output:
5275 1880 872 857 82 152 7419 496 461 371 2714 1207 660 1744 219 63 17 3346 5677 461 1231 196 2250 97 3770 214 986 189 180 584 2666 0 821 107 839 8 223 90 476 71 867 107 6918 4760 4033 454 3138 1159 6072 4693 56 191 186 245 474 104 377 3627 141 3367 3835 1005 2433 223 6480 2854 29 213 120 6433 57 11...
result:
ok 200000 numbers
Subtask #5:
score: 0
Skipped
Dependency #1:
0%
Subtask #6:
score: 0
Skipped
Dependency #5:
0%