QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#645064 | #8949. 赫露艾斯塔 | DaiRuiChen007 | 0 | 3202ms | 140976kb | C++17 | 3.6kb | 2024-10-16 16:44:33 | 2024-10-16 16:44:34 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5;
mt19937 rnd(time(0));
struct Treap {
int x[MAXN],y[MAXN],tx[MAXN],ty[MAXN],pri[MAXN],ls[MAXN],rs[MAXN],siz[MAXN];
void psu(int p) { siz[p]=siz[ls[p]]+siz[rs[p]]+1; }
void setx(int p,int k) { x[p]=tx[p]=k; }
void sety(int p,int k) { y[p]=ty[p]=k; }
void psd(int p) {
if(tx[p]) setx(ls[p],tx[p]),setx(rs[p],tx[p]),tx[p]=0;
if(ty[p]) sety(rs[p],ty[p]),sety(rs[p],ty[p]),ty[p]=0;
}
void splix(int p,int k,int &u,int &v) {
if(!p) return u=v=0,void();
psd(p);
if(x[p]<=k) u=p,splix(rs[p],k,rs[p],v),psu(p);
else v=p,splix(ls[p],k,u,ls[p]),psu(p);
}
void spliy(int p,int k,int &u,int &v) {
if(!p) return u=v=0,void();
psd(p);
if(y[p]>=k) u=p,spliy(rs[p],k,rs[p],v),psu(p);
else v=p,spliy(ls[p],k,u,ls[p]),psu(p);
}
void spliz(int p,int k,int &u,int &v) {
if(!p) return u=v=0,void();
psd(p);
if(x[p]-y[p]<=k) u=p,spliz(rs[p],k,rs[p],v),psu(p);
else v=p,spliz(ls[p],k,u,ls[p]),psu(p);
}
int merge(int u,int v) {
// cerr<<"merge "<<u<<" "<<v<<"\n";
if(!u||!v) return u|v;
psd(u),psd(v);
if(pri[u]<pri[v]) return rs[u]=merge(rs[u],v),psu(u),u;
else return ls[v]=merge(u,ls[v]),psu(v),v;
}
void out(int u) {
if(!u) return ;
psd(u),out(ls[u]),printf("(%d,%d) ",x[u],y[u]),out(rs[u]);
}
} T;
int n,m,ax[MAXN],ay[MAXN],ux[MAXN],uy[MAXN],qx[MAXN],qy[MAXN],op[MAXN],ans[MAXN];
struct poi { int x,y,id; } a[MAXN<<1];
vector <int> ins[MAXN];
struct Bit1 {
int tr[MAXN],s;
void init() { fill(tr+1,tr+n+1,m+1); }
void upd(int x,int v) { for(;x;x&=x-1) tr[x]=min(tr[x],v); }
int qry(int x) { for(s=m+1;x<=n;x+=x&-x) s=min(s,tr[x]); return s; }
} Tmn;
struct Bit2 {
int tr[MAXN],s;
void upd(int x,int v) { for(;x;x&=x-1) tr[x]=max(tr[x],v); }
int qry(int x) { for(s=0;x<=n;x+=x&-x) s=max(s,tr[x]); return s; }
} Tmx;
struct Bit3 {
int tr[MAXN],s;
void add(int x,int v) { for(;x;x&=x-1) tr[x]+=v; }
int qry(int x) { for(s=0;x<=n;x+=x&-x) s+=tr[x]; return s; }
} To,Tx,Ty;
signed main() {
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;++i) cin>>ax[i]>>ay[i],a[i]={ax[i],ay[i],i};
for(int i=1;i<=m;++i) cin>>op[i]>>ux[i]>>uy[i]>>qx[i]>>qy[i],a[i+n]={ux[i],uy[i],i+n};
sort(a+1,a+n+m+1,[&](poi u,poi v){ return u.x^v.x?u.x>v.x:u.id>v.id; });
Tmn.init();
for(int i=1;i<=n+m;++i) {
if(a[i].id>n) Tmn.upd(a[i].y,a[i].id-n);
else ins[Tmn.qry(a[i].y)].push_back(a[i].id);
}
for(int i=1;i<=n;++i) a[i]={ax[i],ay[i],i};
for(int i=1;i<=m;++i) a[i]={qx[i],qy[i],i+n};
sort(a+1,a+n+m+1,[&](poi u,poi v){ return u.x^v.x?u.x>v.x:u.id>v.id; });
for(int i=1;i<=n+m;++i) {
if(a[i].id>n) ans[a[i].id-n]=To.qry(a[i].y+1);
else To.add(a[i].y,1);
}
for(int i=1;i<=n;++i) Tx.add(ax[i],1),Ty.add(ay[i],1);
int rt=0;
for(int i=1,ot=n;i<=m;++i) {
// cerr<<"out["<<i<<"] = "<<ans[i]<<"\n";
int u,o1,o2,o3;
T.splix(rt,ux[i],o1,o2);
T.spliy(o1,uy[i]+1,o3,u);
rt=T.merge(T.merge(o3,u),o2);
if(u) op[i]==2?T.setx(u,ux[i]):T.sety(u,uy[i]);
for(int j:ins[i]) {
Tx.add(ax[j],-1),Ty.add(ay[j],-1),--ot;
// cerr<<"push "<<j<<"("<<ax[j]<<","<<ay[j]<<")\n";
op[i]==2?ax[j]=ux[i]:ay[j]=uy[i];
T.spliz(rt,ax[j]-ay[j],o1,o2);
T.x[j]=ax[j],T.y[j]=ay[j],T.pri[j]=rnd(),T.siz[j]=1;
rt=T.merge(T.merge(o1,j),o2);
}
// T.out(rt); puts("");
Tmx.upd(ux[i],uy[i]);
if(Tmx.qry(qx[i]+1)>qy[i]) { cout<<"0\n"; continue; }
T.splix(rt,qx[i],o1,o2);
T.spliy(o1,qy[i]+1,o3,u);
// cerr<<"siz = "<<T.siz[u]<<", >x = "<<Tx.qry(qx[i]+1)<<", >y = "<<Ty.qry(qy[i]+1)<<"\n";
ans[i]+=ot+T.siz[u]-Tx.qry(qx[i]+1)-Ty.qry(qy[i]+1);
cout<<ans[i]<<"\n";
rt=T.merge(T.merge(o3,u),o2);
}
return 0;
}
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 10ms
memory: 34564kb
input:
995 996 950 481 376 18 141 776 711 966 130 727 468 529 47 39 857 563 832 821 776 472 154 914 825 279 332 415 470 361 968 440 45 560 299 755 703 785 744 387 547 382 3 549 344 573 778 424 784 765 280 115 251 434 695 98 463 506 379 38 610 486 305 623 703 244 856 365 117 360 772 847 331 723 663 991 900 ...
output:
795 853 1212 586 1147 505 602 1236 1266 571 695 427 902 36 313 746 1307 1221 1171 252 1066 788 103 1177 178 -440 445 1379 902 834 752 1098 846 960 511 108 387 -380 339 514 519 833 515 1207 693 956 1360 1069 75 -133 9 850 598 510 627 347 679 112 330 674 -353 868 -433 613 781 455 -209 0 262 937 1006 9...
result:
wrong answer 1st numbers differ - expected: '423', found: '795'
Subtask #2:
score: 0
Wrong Answer
Test #9:
score: 0
Wrong Answer
time: 2132ms
memory: 133856kb
input:
999996 999996 921339 140126 955508 363759 958698 342406 280137 955674 907511 75721 189876 946586 152058 168837 541857 557702 84498 865987 185574 809224 704828 701026 815379 548000 989515 518951 335439 336866 745570 790616 766723 212893 926629 859003 51261 40866 592510 556235 324926 700261 320946 798...
output:
0 0 953250 0 0 790970 0 0 0 0 218574 0 0 0 0 -35339 0 0 0 0 0 0 363744 0 0 0 0 0 0 0 0 0 0 0 244722 0 0 -12221 0 0 0 0 21965 0 0 0 6191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5717 170405 0 0 0 0 0 0 17426 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 -13763 0 0 0 0 0 0 0 21715 0 0 0 0 0 0...
result:
wrong answer 3rd numbers differ - expected: '953730', found: '953250'
Subtask #3:
score: 0
Wrong Answer
Test #17:
score: 0
Wrong Answer
time: 3202ms
memory: 140976kb
input:
999995 999997 261379 334440 985281 986034 549380 718157 670003 253925 533027 437989 326806 983213 965935 756259 229069 686789 331338 684961 957559 390618 937820 959719 338153 779814 582581 965418 634156 421264 308778 938878 913059 390904 481477 431492 739774 793015 901442 934600 256704 991485 366691...
output:
231315 950457 171276 288698 419504 628882 901437 -476725 451841 262646 452713 593275 635351 222461 267027 684280 195748 271376 867050 994960 661706 850801 705055 945884 -282139 675958 942897 -287414 743682 68468 953550 499737 565820 420099 806664 1073880 988403 593849 430390 -386798 196647 45678 508...
result:
wrong answer 1st numbers differ - expected: '160635', found: '231315'
Subtask #4:
score: 0
Skipped
Dependency #1:
0%
Subtask #5:
score: 0
Skipped
Dependency #1:
0%