QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#291200#7685. Barkley IIOAleksaWA 112ms32268kbC++141.6kb2023-12-26 05:36:342023-12-26 05:36:34

Judging History

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

  • [2023-12-26 05:36:34]
  • 评测
  • 测评结果:WA
  • 用时:112ms
  • 内存:32268kb
  • [2023-12-26 05:36:34]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define int long long
const int N = 5e5 + 69;
int n, m, a[N], fenw[N];
vector<int> pos[N];
map<int, int> lst, sv;
vector<pair<int, int>> q[N];
signed main() {
	ios_base::sync_with_stdio(false);
  cout.tie(nullptr); 
  cin.tie(nullptr);
  //freopen("newbarn.in", "r", stdin);
  //freopen(newbarn.out", "w", stdout);
  int tt = 1;
  cin >> tt;
  while (tt--) {
  	auto add = [&](int v, int val) {
  		for (int i = v;i < N;i += (i & -i))
  			fenw[i] += val;
  	};
  	auto get = [&](int v) {
  		int res = 0;
  		for (int i = v;i >= 1;i -= (i & -i))
  			res += fenw[i];
  		return res;
  	};
  	cin >> n >> m;
  	for (auto i : lst)
			add(i.f, -1);
		for (auto i : sv) {
			q[i.f].clear();
			pos[i.f].clear();
		}
  	sv.clear();
  	lst.clear();
  	for (int i = 1;i <= n;i++) {
  		cin >> a[i];
  		sv[a[i]] = 1;
  	}
  	for (auto u : sv)
  		pos[u.f].push_back(0);
  	for (int i = 1;i <= n;i++)
  		pos[a[i]].push_back(i);
  	for (auto u : sv)
  		pos[u.f].push_back(n + 1);
  	for (auto i : sv) {
  		for (int j = 1;j < (int)pos[i.f].size();j++) {
  			q[pos[i.f][j] - 1].push_back({pos[i.f][j - 1] + 1, i.f});
  		}
  	}
		int mx = 1;
		for (auto u : sv) {
			if (mx != u.f)
				break;
			else
				mx++;
		}
  	int ans = sv.size() - mx;
  	for (int i = 1;i <= n;i++) {
  		if (lst[a[i]] > 0)
  			add(lst[a[i]], -1);
  		add(i, 1);
  		for (auto u : q[i]) {
  			int l = u.f, mx = u.s;
  			if (i == n)
  			ans = max(ans, get(i) - get(l - 1) - mx);
  		}
  		lst[a[i]] = i;
  	}
  	cout << ans << '\n';
  }
  return 0;
}

詳細信息

Test #1:

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

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: -100
Wrong Answer
time: 112ms
memory: 32268kb

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
8
12
8
13
13
17
20
23
26
29
29
31
33
35
36
24
40
37
39
45
49
49
52
55
59
59
62
67
68
68
72
77
79
80
82
84
86
86
89
92
96
90
101
102
94
100
104
110
111
109
113
105
109
119
123
127
131
118
121
136
140
142
146
141
144
150
150
151
153
154
155
155
159
161
163
170
167
168
170
173
176
177
179
185
185
1...

result:

wrong answer 3rd numbers differ - expected: '4', found: '8'