QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#291200 | #7685. Barkley II | OAleksa | WA | 112ms | 32268kb | C++14 | 1.6kb | 2023-12-26 05:36:34 | 2023-12-26 05:36:34 |
Judging History
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;
}
Details
Tip: Click on the bar to expand more detailed information
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'