QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#763684#964. Excluded MinhighkjTL 3ms16224kbC++113.5kb2024-11-19 21:36:172024-11-19 21:36:18

Judging History

你现在查看的是最新测评结果

  • [2024-11-19 21:36:18]
  • 评测
  • 测评结果:TL
  • 用时:3ms
  • 内存:16224kb
  • [2024-11-19 21:36:17]
  • 提交

answer

#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
using namespace __gnu_pbds;
using namespace std;
#define pb push_back
#define rep(i,x,y) for(register int i=x;i<=y;i++)
#define rep1(i,x,y) for(register int i=x;i>=y;--i)
#define fire signed
#define il inline
template<class T> il void print(T x) {
	if(x<0) printf("-"),x=-x;
	if (x > 9) print(x / 10);
	putchar(x % 10 + '0');
}
const int bufsize = 230005;
char buf[bufsize], *f1, *f2;
#define getchar() (f1 == f2 && (f2 = buf + fread(f1 = buf, 1, bufsize, stdin)) == buf? EOF: *f1++)
template<class T> il void in(T &x) {
    x = 0; char ch = getchar();
    int f = 1;
    while (ch < '0' || ch > '9') {if(ch=='-') f = -1; ch = getchar(); }
    while (ch >= '0' && ch <= '9') { x = (x << 3) + (x << 1) + (ch ^ 48); ch = getchar(); }
    x *= f;
}
int T=1;
int n,q;
const int N=5e5+10,M=710;
int Maxn;
struct node{
	int l,r;
	int Max,tag;
}tr[M][M<<2];
int tt[N];
il void up(int x,int id) {
	tr[id][x].Max=max(tr[id][x<<1].Max,tr[id][x<<1|1].Max);
}
int lowbit(int x) {
	return x&-x;
}
void add(int x,int k) {
	for(;x<=Maxn;x+=lowbit(x)) tt[x]+=k;
}
int Ans(int x) {
	int res=0;
	for(;x;x-=lowbit(x)) res+=tt[x];
	return res;
}
il void build(int u,int l,int r,int id) {
	tr[id][u]={l,r};
	if(l==r) {
		tr[id][u].Max=-l;
		return ;
	}
	int mid=l+r>>1;
	build(u<<1,l,mid,id);
	build(u<<1|1,mid+1,r,id);
	up(u,id);
}
il void down(int x,int id) {
	if(tr[id][x].tag) {
		tr[id][x<<1].tag+=tr[id][x].tag;
		tr[id][x<<1|1].tag+=tr[id][x].tag;
		tr[id][x<<1|1].Max+=tr[id][x].tag;
		tr[id][x<<1].Max+=tr[id][x].tag;
		tr[id][x].tag=false;
	}
}
il void modify(int u,int l,int r,int k,int id) {
	if(tr[id][u].l>=l&&tr[id][u].r<=r) {
		tr[id][u].Max+=k;
		tr[id][u].tag+=k;
		return ;
	}
	down(u,id);
	int mid=tr[id][u].l+tr[id][u].r>>1;
	if(mid>=l) modify(u<<1,l,r,k,id);
	if(mid<r) modify(u<<1|1,l,r,k,id);
	up(u,id);
}
il int Ans(int u,int x,int id) {
	if(tr[id][u].l==tr[id][u].r) return tr[id][u].Max;
	down(u,id);
	int mid=tr[id][u].l+tr[id][u].r>>1;
	if(mid>=x) return Ans(u<<1,x,id);
	return Ans(u<<1|1,x,id);
}
int len;
struct QQ{
	int l,r,id;
	friend il bool operator<(const QQ&a,const QQ&b) {
		return a.l/len!=b.l/len?a.l<b.l:a.r<b.r;
	}
}s[N];
int a[N],ll,ans[N],Max;
#define bl(x) ((x-1)/ll+1)
#define L(x) ((x-1)*ll+1)
#define R(x) min(Max,x*ll)
il void add(int x) {
	int itl=bl(x);
	int bln=bl(Max);
	modify(1,x,R(itl),1,itl);
	itl++;
	if(itl<=bln) add(itl,1);
}
il void del(int x) {
	int itl=bl(x);
	int bln=bl(Max);
	modify(1,x,R(itl),-1,itl);
	itl++;
	if(itl<=bln) add(itl,-1);
}
void solve() { 
	in(n),in(q);
	rep(i,1,n) in(a[i]),a[i]++,Max=max(Max,a[i]);
	Max=max(Max,n);
	len=sqrt(n);
	ll=max(1,(int)sqrt(Max)-100);
	Maxn=bl(Max);
	rep(i,1,q) {
		in(s[i].l),in(s[i].r);
		s[i].id=i;
	}
	sort(s+1,s+1+q);
	rep(i,1,bl(Max)) build(1,L(i),R(i),i);
	int L=0,R=0;
	L=1,R=n;
	rep(i,1,n) add(a[i]);
	rep(i,1,q) {
		while(L>s[i].l) add(a[--L]);
		while(L<s[i].l) del(a[L++]);
		while(R<s[i].r) add(a[++R]);
		while(R>s[i].r) del(a[R--]);
		int lst=false,ss=0;
		rep1(j,bl(Max),1) {
			int id=tr[j][1].Max,pl=Ans(j);
			id+=pl;
			if(id>=0) {
				lst=j;
				ss=pl;
				break;
			}
		}
		int res=0;
		rep1(j,R(lst),L(lst)) {
			if(ss+Ans(1,j,lst)>=0) {
				res=j;
				break;
			}
		}
		ans[s[i].id]=res;
	}
	rep(i,1,q) printf("%d\n",ans[i]);
}
fire main() {
	while(T--) {
		solve();
	}
	return false;
}
/*
3 1
1 2 2
1 3
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 12032kb

input:

3 3
0 0 2
1 3
2 3
3 3

output:

3
1
0

result:

ok 3 number(s): "3 1 0"

Test #2:

score: 0
Accepted
time: 2ms
memory: 12056kb

input:

3 2
1 2 2
1 2
1 3

output:

0
3

result:

ok 2 number(s): "0 3"

Test #3:

score: 0
Accepted
time: 0ms
memory: 12124kb

input:

10 10
3 0 3 3 9 7 9 6 0 7
3 3
9 9
4 6
1 9
3 4
2 4
7 10
3 7
5 7
2 7

output:

0
1
0
5
0
1
1
0
0
1

result:

ok 10 numbers

Test #4:

score: 0
Accepted
time: 2ms
memory: 13960kb

input:

10 10
3 0 0 0 5 1 1 1 2 1
1 2
8 8
5 7
1 7
2 2
1 5
5 6
4 6
3 10
6 8

output:

1
0
2
7
1
4
0
2
8
3

result:

ok 10 numbers

Test #5:

score: 0
Accepted
time: 0ms
memory: 16216kb

input:

100 100
15 82 7 39 63 55 64 99 71 63 32 99 67 94 3 43 15 75 45 55 53 4 35 36 15 40 82 20 62 43 6 83 27 95 27 45 98 44 35 98 39 7 17 32 76 7 40 16 40 63 13 8 22 27 11 12 61 14 19 45 100 97 90 88 22 59 25 63 4 25 65 16 22 92 84 44 99 66 89 26 93 97 35 97 92 1 32 40 97 97 78 43 7 12 23 53 61 74 33 90
1...

output:

68
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
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
48
0
0
0
0
0
0
0
0
0
0
0
0
0
28
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

result:

ok 100 numbers

Test #6:

score: 0
Accepted
time: 3ms
memory: 16224kb

input:

100 100
17 86 33 8 11 27 8 11 13 9 3 43 11 23 26 42 44 12 44 12 15 0 75 51 72 5 49 2 40 57 24 47 39 42 4 5 6 52 3 2 42 19 62 33 24 22 16 69 4 33 44 70 29 11 2 2 58 9 6 10 25 10 33 26 17 3 14 0 48 7 48 51 0 39 54 37 14 9 3 85 18 4 25 9 2 0 39 8 17 13 25 45 10 39 12 18 9 5 66 6
13 89
10 90
42 67
43 52...

output:

76
80
0
0
18
1
18
1
5
5
1
1
22
11
0
15
0
59
5
56
1
80
0
1
1
21
0
61
22
11
0
3
8
15
40
1
8
81
71
20
2
0
60
0
60
31
0
59
0
0
0
28
0
21
1
7
5
0
31
0
76
28
0
0
27
1
23
0
1
27
1
0
0
1
0
5
63
52
2
43
73
1
86
0
61
0
27
2
30
5
31
1
0
14
59
27
1
1
67
63

result:

ok 100 numbers

Test #7:

score: 0
Accepted
time: 0ms
memory: 16140kb

input:

100 100
6 1 1 5 13 11 35 5 3 2 0 4 0 9 1 2 3 3 19 1 7 9 7 11 7 8 10 18 28 17 31 2 4 8 2 3 3 2 22 4 9 4 7 2 9 15 8 2 3 19 5 24 3 10 11 5 9 20 8 4 11 10 18 9 13 34 5 34 2 9 24 6 21 16 6 12 26 2 2 2 6 11 2 14 3 8 2 12 2 19 8 3 18 23 5 21 23 8 4 0
44 67
25 74
24 79
59 73
4 81
42 66
48 55
15 38
35 63
16 ...

output:

22
50
56
0
78
23
0
22
29
24
38
37
17
57
0
6
0
58
52
4
64
44
0
37
75
75
34
89
0
4
0
12
39
0
0
69
53
14
38
13
36
30
0
7
46
83
28
6
44
22
40
50
24
26
36
49
0
0
6
49
27
78
0
37
11
49
16
50
25
30
37
58
64
28
62
36
0
52
0
95
34
4
50
17
0
27
44
0
0
21
44
66
69
0
39
25
0
2
63
0

result:

ok 100 numbers

Test #8:

score: 0
Accepted
time: 2ms
memory: 16076kb

input:

100 100
0 1 0 1 0 1 1 1 0 2 1 1 2 0 1 1 0 3 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 1 0 0 1 2 0 0 1 0 0 3 0 1 0 0 3 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 0 0 0 4 0 1 1 0 1 0 2 2 0 0 1
41 53
31 36
78 99
60 86
1 67
3 92
89 92
60 70
42 56
42 46
39 84
40 66
9 27
75 78
33 94
17 53...

output:

13
6
22
27
67
90
3
11
15
5
46
27
19
4
62
37
84
35
53
4
47
95
55
63
24
39
22
51
67
21
55
36
24
16
33
74
4
16
63
81
41
14
3
54
6
40
36
33
29
32
14
60
13
17
73
44
34
2
14
79
59
13
75
72
31
10
22
57
23
37
74
2
6
6
38
5
4
62
66
22
33
0
23
21
12
54
75
6
8
16
37
36
3
53
63
18
67
60
31
19

result:

ok 100 numbers

Test #9:

score: -100
Time Limit Exceeded

input:

300000 300000
216504 101790 177261 84423 215788 67188 170620 125383 222808 149722 190483 152974 27524 172557 109218 201761 138030 177265 270417 244027 29296 13565 108388 270622 75102 137755 134081 21988 249714 268911 178911 39288 197287 232628 152784 226739 40134 213404 230781 181323 235763 55745 44...

output:


result: