QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#829674#8949. 赫露艾斯塔275307894a#0 3ms16320kbC++143.1kb2024-12-24 12:00:492024-12-24 12:00:49

Judging History

This is the latest submission verdict.

  • [2024-12-24 12:00:49]
  • Judged
  • Verdict: 0
  • Time: 3ms
  • Memory: 16320kb
  • [2024-12-24 12:00:49]
  • Submitted

answer

#include<bits/stdc++.h>
#define Gc() getchar()
#define Me(x,y) memset(x,y,sizeof(x))
#define Mc(x,y) memcpy(x,y,sizeof(x))
#define d(x,y) ((m)*(x-1)+(y))
#define R(n) (rnd()%(n)+1)
#define Pc(x) putchar(x)
#define LB lower_bound
#define UB upper_bound
#define fi first
#define se second
#define eb emplace_back
#define all(x) x.begin(),x.end()
using namespace std;using ll=long long;using db=double;using lb=long db;using ui=unsigned;using ull=unsigned long long;using pii=pair<int,int>;
const int N=1e6+5,M=0.9e3+5,K=1000+5,mod=998244353,Mod=mod-1;const db eps=1e-9;const int INF=1e9+7;mt19937 rnd(28382);
#define Tp template<typename T>
#define Ts template<typename T,typename... Ar>
namespace Debug{
	Tp void _debug(char* f,T t){cerr<<f<<'='<<t<<endl;}
	Ts void _debug(char* f,T x,Ar... y){while(*f!=',') cerr<<*f++;cerr<<'='<<x<<",";_debug(f+1,y...);}
	#ifdef LOCAL
	#define gdb(...) _debug((char*)#__VA_ARGS__,__VA_ARGS__)
	#else 
	#define gdb(...) void()
	#endif
}using namespace Debug;
int n,m,A[N],B[N],C[N],D[N],ti[N];
namespace FHQ{
	int l[N],r[N],rd[N],siz[N],cnt;
	pii val[N];pii tag[N];
	void Pf(int v,pii w){
		if(!v) return;
		if(w.fi) val[v].fi=tag[v].fi=w.fi;
		if(w.se) val[v].se=tag[v].se=w.se;
	}
	void P(int v){
		Pf(l[v],tag[v]);Pf(r[v],tag[v]);
		tag[v]=make_pair(0,0);
	}
	void up(int v){
		siz[v]=siz[l[v]]+siz[r[v]]+1;
	}
	void splitx(int x,int v,int &a,int &b){
		if(!v){a=b=0;return;}
		P(v);
		if(val[v].fi<=x) a=v,splitx(x,r[v],r[a],b);
		else b=v,splitx(x,l[v],a,l[b]);
	}
	void splity(int y,int v,int &a,int &b){
		if(!v){a=b=0;return;}
		P(v);
		if(val[v].se<=y) a=v,splity(y,r[v],r[a],b);
		else b=v,splity(y,l[v],a,l[b]);
	}
	int merge(int x,int y){
		if(!x||!y) return x+y;
		P(x);P(y);
		if(rd[x]<rd[y]) return r[x]=merge(r[x],y),up(x),x;
		else return l[y]=merge(x,l[y]),up(y),y;
	}
	int newnode(pii x){
		val[++cnt]=x;rd[cnt]=rnd();siz[cnt]=1;
		return cnt;
	}
	int rt;
	void modify(int x,int y,int op){
		int r1,r2,r3;
		splitx(-x-1,rt,r1,r2);splity(y,r2,r2,r3);
		Pf(r2,op==1?make_pair(0,y):make_pair(-x,0));
		rt=merge(r1,merge(r2,r3));
	}
	int qry(int x,int y){
		int r1,r2,r3;
		splitx(-x-1,rt,r1,r2);splity(y,r2,r2,r3);
		int w=siz[r2];
		rt=merge(r1,merge(r2,r3));
		return w;
	}
	void ins(int x,int y){
		int r1,r2,r3;
		splitx(-x-1,rt,r1,r2);splity(y,r2,r2,r3);
		rt=merge(merge(r1,r2),merge(newnode(make_pair(-x,y)),r3));
	}
}
int id[N];
namespace Tree{
	void modify(int x,int y,int op,int id){
		for(int i=1;i<=n;i++) if(!ti[i]&&A[i]<=x&&B[i]<=y){
			if(op==1) FHQ::ins(A[i],y);
			else FHQ::ins(x,B[i]);
			ti[i]=id;
			gdb(i,id);
		}
	}
}
int ans[N];
void Solve(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d%d",&A[i],&B[i]);
	for(int i=1;i<=m;i++){
		int op,x,y;
		scanf("%d%d%d%d%d",&op,&x,&y,&C[i],&D[i]);
		FHQ::modify(x,y,op);
		Tree::modify(x,y,op,i);
		ans[i]=FHQ::qry(C[i],D[i]);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<ti[i];j++) if(A[i]<=C[j]&&B[i]<=D[j]) ans[j]++;
	}
	for(int i=1;i<=m;i++) printf("%d\n",ans[i]);
}
int main(){
	int t=1;
	// scanf("%d",&t);
	while(t--) Solve();
	cerr<<clock()*1.0/CLOCKS_PER_SEC<<'\n';
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 3ms
memory: 16320kb

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:

423
473
758
313
694
232
333
784
821
154
247
244
504
54
200
370
872
782
734
174
660
467
76
754
77
5
144
974
526
415
439
694
507
577
258
120
243
3
2
321
315
498
218
828
433
623
981
700
123
57
72
501
377
285
389
130
319
141
222
412
25
556
3
395
440
178
42
0
188
633
685
569
496
680
585
72
152
545
243
62...

result:

wrong answer 26th numbers differ - expected: '3', found: '5'

Subtask #2:

score: 0
Time Limit Exceeded

Test #9:

score: 0
Time Limit Exceeded

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:


result:


Subtask #3:

score: 0
Time Limit Exceeded

Test #17:

score: 0
Time Limit Exceeded

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:


result:


Subtask #4:

score: 0
Skipped

Dependency #1:

0%

Subtask #5:

score: 0
Skipped

Dependency #1:

0%