QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#476944 | #5543. The Only Mode | yzkkai | ML | 77ms | 13992kb | C++20 | 2.2kb | 2024-07-13 21:48:55 | 2024-07-13 21:48:55 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define lowbit(x) ((x) & -(x))
inline void solve() {
int n;
cin >> n;
vector<int> a(n);
for (int& i : a)
cin >> i;
vector<vector<int>> pref(n + 1, vector<int>(4));
for (int i = 1; i <= n; ++i) {
for (int j = 0;j < 4; ++j)
pref[i][j] = pref[i - 1][j];
++pref[i][a[i - 1]];
}
auto modify = [&](int x, int y, int val, vector<vector<int>> &bit) -> void {
for (; x < size(bit); x += lowbit(x))
for (int j = y; j < size(bit[0]); j += lowbit(j))
bit[x][j] = min(bit[x][j], val);
return;
};
auto query = [&](int x, int y, const vector<vector<int>> &bit) -> int {
int ret = 1e9;
for (; x > 0; x -= lowbit(x))
for (int j = y; j > 0; j -= lowbit(j))
ret = min(ret, bit[x][j]);
return ret;
};
vector<int> ans(4);
for (int i = 0; i < 4; ++i) {
vector<vector<int>> b(n + 1, vector<int>(4));
vector<pair<int, int>> lr(3, {1e9, 0});
for (int j = 0; j <= n; ++j) {
for (int k = 0, f = 0; k < 3; ++k) {
if (k == i) ++f;
b[j][k] = pref[j][i] - pref[j][k + f];
lr[k].first = min(lr[k].first, b[j][k]);
lr[k].second = max(lr[k].second, b[j][k]);
}
b[j][3] = j;
}
sort(b.begin(), b.end());
vector<vector<int>> bit(lr[1].second - lr[1].first + 1, vector<int>(lr[2].second - lr[2].first + 1, 1e9));
for (int j = 0, lst = 0; j <= n; ++j) {
if (b[lst][0] != b[j][0]) {
for (int k = lst; k < j; ++k)
modify(abs(b[k][1] - lr[1].first) + 1, abs(b[k][2] - lr[2].first) + 1, b[k][3], bit);
lst = j;
}
ans[i] = max(ans[i], b[j][3] - query(abs(b[j][1] - lr[1].first), abs(b[j][2] - lr[2].first), bit));
}
}
for (int i = 0; i < 4; ++i)
cout << ans[i] << " \n"[i == 3];
return;
}
signed main() {
cin.tie(0)->sync_with_stdio(0);
int t = 1;
while (t--)
solve();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3604kb
input:
7 1 2 2 0 3 0 3
output:
4 1 5 3
result:
ok single line: '4 1 5 3'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
12 2 0 1 0 2 1 1 0 2 3 3 3
output:
4 9 1 9
result:
ok single line: '4 9 1 9'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3600kb
input:
2 0 2
output:
1 0 1 0
result:
ok single line: '1 0 1 0'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
12 3 0 2 2 1 0 2 1 3 3 2 3
output:
1 5 11 8
result:
ok single line: '1 5 11 8'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
1 1
output:
0 1 0 0
result:
ok single line: '0 1 0 0'
Test #6:
score: 0
Accepted
time: 4ms
memory: 4336kb
input:
4207 3 1 0 3 2 0 3 1 1 1 1 3 0 1 1 0 2 2 3 0 1 1 0 1 0 2 0 1 0 0 3 3 1 0 1 3 3 0 2 0 2 0 1 0 2 3 2 3 0 0 0 0 1 2 1 2 0 2 2 0 3 3 2 2 0 2 2 0 3 0 1 3 1 1 0 2 3 0 1 2 1 2 0 0 1 1 0 3 3 2 0 2 1 3 0 1 0 3 0 0 0 2 2 2 0 1 1 0 3 1 1 3 3 2 2 1 3 3 1 3 2 0 2 3 2 2 1 0 2 3 0 1 0 0 1 1 1 3 3 1 3 3 3 0 0 0 3 2...
output:
2330 1520 4207 1359
result:
ok single line: '2330 1520 4207 1359'
Test #7:
score: 0
Accepted
time: 77ms
memory: 13992kb
input:
89925 0 0 0 3 0 3 0 2 3 2 3 1 0 0 0 2 2 1 3 3 0 0 1 0 0 3 0 1 0 0 1 1 0 0 1 2 1 3 1 2 1 2 2 1 0 2 2 3 0 0 1 0 2 3 2 3 0 0 1 0 0 1 2 1 3 0 0 0 2 1 1 0 1 3 2 2 0 0 2 3 2 3 3 1 3 3 0 2 0 2 2 0 2 1 3 0 1 1 0 0 1 0 3 1 2 2 2 0 2 0 2 3 2 0 0 2 3 3 1 0 1 2 2 2 1 2 0 0 3 2 3 0 1 1 3 3 0 0 0 3 0 2 0 0 2 3 1 ...
output:
89925 49888 75725 38162
result:
ok single line: '89925 49888 75725 38162'
Test #8:
score: 0
Accepted
time: 54ms
memory: 10776kb
input:
64937 1 1 0 2 1 1 3 1 1 1 2 0 3 1 1 2 1 2 2 1 0 2 1 1 1 1 1 0 3 1 0 2 1 0 0 0 0 2 1 2 1 2 2 1 2 3 2 1 2 1 3 0 1 3 0 0 1 3 1 2 2 2 0 3 3 1 3 0 3 3 2 0 1 1 2 0 3 3 3 2 1 0 1 0 1 3 0 0 2 1 0 3 3 1 2 3 2 1 1 0 0 3 1 1 2 1 0 2 1 0 0 1 1 3 0 1 2 1 3 2 0 3 1 2 1 2 0 0 0 1 1 2 3 3 2 1 1 1 2 1 3 1 2 2 2 0 1 ...
output:
64937 61901 51387 63870
result:
ok single line: '64937 61901 51387 63870'
Test #9:
score: 0
Accepted
time: 66ms
memory: 11876kb
input:
73423 1 2 2 0 0 0 0 2 1 2 1 2 1 3 1 3 3 0 1 2 2 0 0 0 3 2 1 1 0 3 0 2 1 3 1 1 2 3 0 1 2 1 0 0 0 3 3 0 3 2 3 3 1 1 3 2 0 0 0 3 2 0 0 2 3 3 3 3 3 2 3 2 2 2 3 3 0 1 1 2 2 2 1 2 2 1 1 2 1 2 2 3 0 3 0 2 2 2 1 2 1 1 2 3 0 1 3 2 0 3 3 3 0 2 2 2 3 1 0 1 0 1 1 3 0 0 2 1 1 3 1 3 3 2 0 2 2 1 1 0 1 0 2 3 1 2 3 ...
output:
36577 18616 60210 73423
result:
ok single line: '36577 18616 60210 73423'
Test #10:
score: 0
Accepted
time: 67ms
memory: 12804kb
input:
82517 2 1 1 0 2 0 3 1 3 1 3 3 2 2 3 0 3 2 2 0 2 1 0 2 2 3 2 0 1 0 1 2 2 1 1 1 3 2 2 0 1 0 0 3 3 1 1 0 3 1 3 1 2 3 3 3 3 3 2 1 3 1 3 0 2 0 2 0 2 2 2 2 2 1 2 1 3 3 2 3 2 3 0 2 0 1 0 0 3 2 1 1 0 1 2 1 1 0 1 3 1 3 3 2 2 3 0 2 1 3 2 1 0 1 2 3 2 2 3 3 1 0 2 0 3 2 3 0 1 2 0 3 3 0 2 1 1 3 3 2 2 0 2 2 1 1 2 ...
output:
50863 68187 40176 82517
result:
ok single line: '50863 68187 40176 82517'
Test #11:
score: 0
Accepted
time: 72ms
memory: 12620kb
input:
79392 0 2 2 2 0 3 2 3 1 1 1 0 0 3 1 3 3 0 2 2 0 0 0 2 1 0 2 2 2 1 2 3 2 0 3 3 3 2 0 1 0 1 1 1 0 1 0 1 0 2 3 3 0 1 2 3 0 1 0 1 0 1 2 2 1 3 0 0 1 3 1 2 2 1 0 0 2 1 0 0 2 2 3 1 3 0 3 2 0 0 0 0 3 3 0 0 2 2 0 2 0 2 3 1 0 2 2 1 2 2 0 3 3 3 2 1 3 1 1 1 1 2 0 0 1 1 1 0 1 1 1 3 3 0 2 3 1 1 0 1 2 3 1 3 3 0 0 ...
output:
68113 34911 26794 79392
result:
ok single line: '68113 34911 26794 79392'
Test #12:
score: -100
Memory Limit Exceeded
input:
100000 2 0 0 1 0 2 3 3 0 2 1 2 0 2 0 3 0 0 2 0 1 1 0 1 1 1 1 0 2 2 0 1 0 1 0 0 0 3 1 0 3 0 1 1 1 3 1 0 1 3 1 1 1 0 1 3 0 1 1 0 1 3 0 0 0 0 0 0 0 1 0 0 1 3 1 3 0 1 0 0 2 1 1 2 2 0 3 3 2 1 1 0 0 1 1 2 0 1 2 0 3 3 1 1 1 0 3 3 0 1 3 0 1 0 2 1 3 3 2 3 2 0 2 3 0 2 2 2 0 1 0 0 1 0 2 1 1 1 2 1 2 1 1 0 3 1 1...
output:
448 100000 52 33