QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#680079#7685. Barkley IIDisplace_#WA 1496ms285632kbC++142.4kb2024-10-26 19:44:212024-10-26 19:44:21

Judging History

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

  • [2024-10-26 19:44:21]
  • 评测
  • 测评结果:WA
  • 用时:1496ms
  • 内存:285632kb
  • [2024-10-26 19:44:21]
  • 提交

answer

#pragma GCC optimize(3)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double dou;
typedef pair<int,int> pii;
#define fi first
#define se second
#define mapa make_pair
typedef long double ld;
typedef unsigned long long ull;
#define ep emplace_back
template <typename T>inline void read(T &x){
	x=0;char c=getchar();bool f=0;
	for(;c<'0'||c>'9';c=getchar()) f|=(c=='-');
	for(;c>='0'&&c<='9';c=getchar())
	x=(x<<1)+(x<<3)+(c^48);
	x=(f?-x:x);
}
const int N=5e5+10;
int Test, n, m;
int a[N];
int lst[N*2], pre[N];
int rt[N], tidx;
int tr[N*40], ls[N*40], rs[N*40];
inline void add(int &p, int l, int r, int x){
	if(!p) p=++tidx, tr[p]=ls[p]=rs[p]=0;
	++tr[p];
	if(l==r) return ;
	int mid=(l+r)>>1;
	if(x<=mid) add(ls[p], l, mid, x);
	else add(rs[p], mid+1, r, x);
}
inline void add(int x, int y){
	++x;
	for(; x<=n+1; x+=(x&-x)) add(rt[x], 1, n+1, y);
}
inline int get(int p, int l, int r, int L, int R){
	if(L>R) return 0; 
	if(!p) return 0;
	if(L<=l&&r<=R) return tr[p];
	int mid=(l+r)>>1, ret=0;
	if(L<=mid) ret+=get(ls[p], l, mid, L, R);
	if(R>mid) ret+=get(rs[p], mid+1, r, L, R);
	return ret;
}
inline int get(int l1, int r1, int l, int r){
	if(l1>r1) return 0;
	if(l>r) return 0;
	int ret=0;
	++r1;
	for(; l1; l1-=(l1&-l1)) ret-=get(rt[l1], 1, n+1, l, r);
	for(; r1; r1-=(r1&-r1)) ret+=get(rt[r1], 1, n+1, l, r);
	return ret;
}
vector<int> vec[N*2];
int main(){
	// freopen("D:\\nya\\acm\\A\\test.in","r",stdin);
	// freopen("D:\\nya\\acm\\A\\test.out","w",stdout);
	read(Test);
	while(Test--){
		read(n); read(m);
		unordered_map<int, int> h;
		int idx=n+2;
		a[0]=0;
		for(int i=1; i<=n; ++i) {
			read(a[i]); a[0]=max(a[0], a[i]);
			if(a[i]>=n+2){
				if(h.find(a[i])==h.end()) h[a[i]]=idx, idx++;
				a[i]=h[a[i]];
			}
		}
		if(a[0]==1){
			printf("-1\n");
			continue ;
		}
		for(int i=1; i<=n+1; ++i) rt[i]=0;
		tidx=0;
		for(int i=1; i<=idx; ++i) lst[i]=0, vec[i].clear(), vec[i].ep(0);
		for(int i=1; i<=n; ++i){
			pre[i]=lst[a[i]]; lst[a[i]]=i;
			add(pre[i], i);
			vec[a[i]].ep(i);
		}
		for(int i=1; i<=idx; ++i) add(lst[i], n+1);
		int ans=0;
		for(int i=1; i<=n+1; ++i){
			vec[i].ep(n+1);
			ans=max(ans, get(1, vec[i][1]-1, vec[i][1], n+1)-i);
			for(int j=1, cur; j<(int)vec[i].size()-1; ++j){
				cur=get(0, vec[i][j]-1, vec[i][j]+1, vec[i][j+1]-1)-i;
				ans=max(ans, cur);
			}
		}
		printf("%d\n", ans);
	}

	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 3ms
memory: 40904kb

input:

2
5 4
1 2 2 3 4
5 10000
5 2 3 4 1

output:

2
3

result:

ok 2 number(s): "2 3"

Test #2:

score: 0
Accepted
time: 84ms
memory: 39856kb

input:

50000
10 19
12 6 1 12 11 15 4 1 13 18
10 8
8 7 6 7 6 2 2 3 4 8
10 6
3 2 6 6 5 2 3 4 5 6
10 11
6 3 7 9 2 1 2 10 10 4
10 6
6 1 2 6 1 1 3 4 2 1
10 9
8 5 3 9 1 7 5 5 1 1
10 5
1 4 3 2 5 4 5 3 5 2
10 14
3 8 12 10 4 2 3 13 7 3
10 14
5 5 12 2 8 1 13 9 8 5
10 7
5 5 6 6 1 5 3 7 3 4
10 7
5 1 4 6 1 6 4 3 7 5
10...

output:

6
5
4
4
2
4
3
7
4
4
4
5
2
3
6
6
7
5
7
6
5
5
6
2
6
8
7
2
5
5
6
2
2
3
4
5
3
3
7
3
2
5
6
1
3
5
3
3
3
8
6
6
5
7
4
4
5
4
6
6
6
3
7
3
6
3
3
7
7
6
6
7
4
3
3
4
4
6
3
4
6
6
4
5
5
9
4
5
7
5
3
5
2
2
5
6
6
8
4
3
4
5
5
5
7
7
3
2
6
5
3
5
4
4
5
6
6
5
6
7
7
4
5
7
4
7
3
7
6
6
6
5
4
2
5
4
2
3
6
5
2
6
5
5
4
3
5
6
6
6
...

result:

ok 50000 numbers

Test #3:

score: 0
Accepted
time: 62ms
memory: 41520kb

input:

100000
5 4
4 3 1 3 1
5 4
2 2 1 3 4
5 9
7 8 7 1 3
5 3
3 2 2 3 1
5 7
1 4 2 4 7
5 4
4 4 4 2 3
5 3
2 1 2 2 2
5 5
2 1 2 5 4
5 9
1 8 4 4 7
5 6
2 6 4 6 2
5 5
1 2 4 4 4
5 3
2 1 1 1 3
5 5
5 4 5 2 5
5 4
3 3 3 2 1
5 3
3 1 3 2 3
5 7
1 5 2 2 7
5 6
2 2 6 5 6
5 10
6 3 3 1 7
5 8
1 6 8 4 3
5 4
1 2 1 3 3
5 7
2 2 4 3 ...

output:

1
1
2
1
2
2
0
2
2
2
1
0
2
1
1
2
2
2
3
0
3
1
2
2
3
3
1
3
0
0
3
2
2
0
2
2
1
0
2
2
3
3
3
1
3
2
2
3
2
3
2
1
2
3
1
3
3
1
2
3
1
1
2
2
2
2
0
1
0
1
0
2
1
3
0
2
2
3
2
2
1
3
1
3
1
1
1
3
1
1
4
0
1
3
2
2
2
0
3
2
4
3
3
2
1
0
4
4
3
2
1
2
1
2
3
2
3
4
4
3
0
0
1
4
1
3
3
2
3
1
3
4
3
1
2
2
3
2
3
2
3
3
1
3
1
1
4
1
1
3
...

result:

ok 100000 numbers

Test #4:

score: 0
Accepted
time: 102ms
memory: 40108kb

input:

25000
20 28
4 28 8 7 8 23 13 27 1 3 24 19 21 7 21 6 10 3 1 8
20 18
6 13 17 2 4 11 12 5 10 8 1 3 5 18 10 2 8 15 4 17
20 17
5 9 5 15 7 11 16 2 16 17 15 11 3 12 13 12 11 17 15 14
20 28
12 17 26 1 21 18 9 12 22 3 7 24 5 8 20 3 25 28 17 20
20 13
9 10 4 9 10 13 4 3 3 9 12 8 4 12 2 2 6 10 13 5
20 22
17 13 ...

output:

12
9
11
14
9
12
9
15
6
11
8
13
14
13
7
11
8
13
11
11
14
14
7
15
10
10
10
12
9
13
12
10
10
14
14
11
9
8
9
10
10
5
11
14
13
14
13
8
8
12
10
10
17
12
7
14
9
11
14
13
8
12
15
13
14
11
9
8
11
17
9
12
11
13
13
10
14
10
10
16
12
13
12
11
14
12
9
12
5
9
15
16
13
15
7
14
12
6
12
13
7
8
12
10
13
15
9
16
7
16
...

result:

ok 25000 numbers

Test #5:

score: 0
Accepted
time: 195ms
memory: 39644kb

input:

5000
100 100
71 48 44 27 73 73 90 42 69 81 79 99 97 3 45 78 38 92 89 27 97 7 4 91 42 59 7 45 88 100 15 66 64 6 26 54 38 38 72 81 15 94 35 63 33 85 100 16 41 5 71 20 92 36 39 59 19 59 11 22 11 26 94 29 73 98 16 16 47 25 35 50 49 6 67 85 69 90 6 87 72 24 37 62 55 54 25 38 95 14 15 26 89 26 25 46 14 24...

output:

59
78
69
48
78
53
64
73
53
66
59
57
62
42
73
69
46
68
66
47
59
64
71
57
73
43
52
66
67
61
66
66
65
58
80
65
65
69
75
76
69
39
69
61
53
72
44
62
63
71
76
56
69
79
49
73
62
71
83
59
70
53
69
73
47
68
74
59
66
74
75
61
53
76
48
62
79
71
47
72
40
80
62
42
63
70
72
70
70
59
68
56
74
54
61
78
68
75
70
39
...

result:

ok 5000 numbers

Test #6:

score: -100
Wrong Answer
time: 1496ms
memory: 285632kb

input:

2
250000 144237
103523 38477 80037 110169 8464 110583 60349 74339 29012 8989 96955 23403 38383 12186 107503 109176 1709 31839 109579 62912 130470 26082 102718 25272 17893 55607 48053 34513 23154 136492 8313 136454 57920 60639 68601 50656 16871 101625 88777 35367 62644 80269 24346 33961 74832 62520 8...

output:

31726488
195099

result:

wrong answer 1st numbers differ - expected: '118705', found: '31726488'