QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#557493 | #8672. 排队 | -xcxxx- | 0 | 247ms | 75800kb | C++14 | 3.0kb | 2024-09-11 09:57:31 | 2024-09-11 09:57:32 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int rd() {int x=0,f=1;char c=getchar();while(!isdigit(c))f=(c=='-'?-1:f),c=getchar();while(isdigit(c))x=x*10+c-'0',c=getchar();return x*f;}
const int N=1000005,inf=0x3f3f3f3f;
int n,Q,l[N],r[N],ans[N];
vector<int> ins[N],ers[N];
struct ChristmasTree {
#define ls (p<<1)
#define rs (p<<1|1)
#define mid ((T[p].l+T[p].r)>>1)
struct node {
int l,r,mx,mn,tag;
void upd(int x) {mx+=x,mn+=x,tag+=x;}
}T[N<<2];
void pushup(int p) {
T[p].mx=max(T[ls].mx,T[rs].mx);
T[p].mn=min(T[ls].mn,T[rs].mn);
}
void pushdown(int p) {
T[ls].upd(T[p].tag);
T[rs].upd(T[p].tag);
T[p].tag=0;
}
void build(int l=1,int r=Q,int p=1) {
T[p].l=l,T[p].r=r;
T[p].mx=-inf,T[p].mn=inf;
if(l==r) return;
build(l,mid,ls);
build(mid+1,r,rs);
}
void modify(int l,int r,int p=1) {
if(T[p].l==l&&T[p].r==r) {
T[p].upd(1);
return;
}
pushdown(p);
if(r<=mid) modify(l,mid,ls);
else if(mid<l) modify(mid+1,r,rs);
else modify(l,mid,ls),modify(mid+1,r,rs);
pushup(p);
}
int qfst(int l,int r,int k,int p=1) {
if(l==r) return l;
pushdown(p);
if(T[ls].mn<=k) return qfst(l,mid,k,ls);
else return qfst(mid+1,r,k,rs);
}
int qlst(int l,int r,int k,int p=1) {
if(l==r) return l;
pushdown(p);
if(T[rs].mx>=k) return qlst(mid+1,r,k,rs);
else return qlst(l,mid,k,ls);
}
void insert(int pos,int p=1) {
// fprintf(stderr,"insert [%d,%d] %d\n",T[p].l,T[p].r,pos);
if(T[p].l==T[p].r) {
T[p].mx=T[p].mn=0;
return;
}
pushdown(p);
if(pos<=mid) insert(pos,ls);
else insert(pos,rs);
pushup(p);
}
void erase(int pos,int p=1) {
// fprintf(stderr,"erase [%d,%d] %d\n",T[p].l,T[p].r,pos);
if(T[p].l==T[p].r) {
T[p].mx=-inf,T[p].mn=inf;
return;
}
pushdown(p);
if(pos<=mid) erase(pos,ls);
else erase(pos,rs);
pushup(p);
}
int ask(int pos,int p=1) {
if(T[p].l==T[p].r) return T[p].mx;
pushdown(p);
if(pos<=mid) return ask(pos,ls);
else return ask(pos,rs);
}
}tree;
signed main() {
n=rd(),Q=rd();
for(int i=1;i<=n;i++) l[i]=rd(),r[i]=rd();
for(int i=1;i<=Q;i++) ins[rd()].push_back(i),ers[rd()].push_back(i);
tree.build();
for(int i=1;i<=n;i++) {
// fprintf(stderr,"i=%d\n",i);
for(int p:ins[i]) tree.insert(p);
int L=tree.qfst(1,n,r[i]),R=tree.qlst(1,n,l[i]);
tree.modify(L,R);
// for(int j=1;j<=Q;j++) cerr<<tree.ask(j)<<' ';cerr<<"\n";
for(int p:ers[i]) {
ans[p]=tree.ask(p);
tree.erase(p);
}
}
for(int i=1;i<=Q;i++) printf("%d\n",ans[i]);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 10
Accepted
time: 11ms
memory: 57112kb
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
Wrong Answer
time: 11ms
memory: 57616kb
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:
11 11 22 11 11 33 99 77 22 11 55 22 168 25 66 33 77 135 179 99 66 22 238 273 65 146 11 11 233 362 328 107 139 33 106 193 11 144 270 86 28 343 55 542 421 22 404 192 337 266 108 55 286 226 206 289 281 70 417 110 471 613 224 99 321 562 383 429 189 406 24 310 350 248 398 285 22 166 38 852 804 46 437 184...
result:
wrong answer 3rd numbers differ - expected: '11', found: '22'
Subtask #2:
score: 0
Wrong Answer
Test #12:
score: 0
Wrong Answer
time: 151ms
memory: 72924kb
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:
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ...
result:
wrong answer 1957th numbers differ - expected: '1', found: '8'
Subtask #3:
score: 0
Wrong Answer
Test #22:
score: 0
Wrong Answer
time: 247ms
memory: 75732kb
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:
19141 39288 14841 58655 15427 4999 26338 93251 2826 78085 64070 55481 2565 15174 24867 57629 35888 51337 67555 44940 27731 24781 54504 26903 73201 7554 3836 41747 67896 104588 43523 3766 13010 31661 17266 85359 16596 28684 64018 56462 23861 47829 22754 86132 37685 44831 88822 36312 15846 33731 10007...
result:
wrong answer 8th numbers differ - expected: '93250', found: '93251'
Subtask #4:
score: 0
Wrong Answer
Test #32:
score: 0
Wrong Answer
time: 230ms
memory: 75800kb
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:
71225 21392 65746 47219 62293 29293 146311 136624 165312 81582 25124 120262 104926 12518 90916 31784 50073 15588 1518 106447 92329 71506 16695 4846 38213 34902 133281 98868 700 26264 6639 173461 61316 71682 15564 112193 125788 15305 41842 30380 24109 17436 10900 115179 22281 37582 101778 120170 1264...
result:
wrong answer 1st numbers differ - expected: '71224', found: '71225'
Subtask #5:
score: 0
Skipped
Dependency #1:
0%
Subtask #6:
score: 0
Skipped
Dependency #5:
0%