QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#125801 | #6626. Real Mountains | bashkort | 6 | 95ms | 4028kb | C++20 | 2.4kb | 2023-07-17 17:46:43 | 2023-07-17 17:46:44 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int MOD = 1e6 + 3;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> h(n);
for (int i = 0; i < n; ++i) {
cin >> h[i];
}
ll best = 3e18;
int p = max_element(h.begin(), h.end()) - h.begin();
vector<int> need(h);
for (int i = 1; i <= p; ++i) {
need[i] = max(need[i], need[i - 1]);
}
for (int i = n - 2; i >= p; --i) {
need[i] = max(need[i], need[i + 1]);
}
vector<set<int>> pos(h[p] + 1);
vector<set<int>> alive(h[p] + 1);
for (int i = 0; i < n; ++i) {
pos[h[i]].insert(i);
if (h[i] < need[i]) {
alive[h[i]].insert(i);
}
}
auto bestL = [&](int i) -> int {
for (int k = h[i] + 1; k <= h[p]; ++k) {
if (!pos[k].empty() && *pos[k].begin() < i) {
return k;
}
}
return 1e9;
};
auto bestR = [&](int i) -> int {
for (int k = h[i] + 1; k <= h[p]; ++k) {
if (!pos[k].empty() && *pos[k].rbegin() > i) {
return k;
}
}
return 1e9;
};
ll ans = 0;
auto inc = [&](int a) {
pos[h[a]].erase(a);
alive[h[a]].erase(a);
h[a] += 1;
pos[h[a]].insert(a);
if (h[a] < need[a]) {
alive[h[a]].insert(a);
}
};
while (true) {
int a = -1, b = -1;
for (int k = 0; k < size(alive); ++k) {
if (!alive[k].empty()) {
a = *alive[k].begin();
b = *alive[k].rbegin();
break;
}
}
if (a == -1) {
break;
}
if (a != b) {
ll LA = bestL(a), RB = bestR(b);
ll A = LA + bestR(a), B = bestL(b) + RB;
ll costA = A + RB + h[a] + 1;
ll costB = B + LA + h[b] + 1;
if (costA > costB) {
swap(a, b);
swap(A, B);
swap(LA, RB);
}
ans += A + h[a];
ans += RB + h[a] + 1 + h[b];
inc(a), inc(b);
} else {
ans += bestL(a) + bestR(a) + h[a];
inc(a);
}
}
best = min(best, ans);
cout << best % MOD << '\n';
return 0;
}
详细
Subtask #1:
score: 3
Accepted
Test #1:
score: 3
Accepted
time: 1ms
memory: 3456kb
input:
3 29 9 9
output:
0
result:
ok 1 number(s): "0"
Test #2:
score: 0
Accepted
time: 1ms
memory: 3480kb
input:
3 62 20 71
output:
7287
result:
ok 1 number(s): "7287"
Test #3:
score: 0
Accepted
time: 1ms
memory: 3424kb
input:
10 72 33 22 22 13 49 53 57 72 85
output:
40403
result:
ok 1 number(s): "40403"
Test #4:
score: 0
Accepted
time: 44ms
memory: 3964kb
input:
5000 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 97 97 97 97 9...
output:
481053
result:
ok 1 number(s): "481053"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
5000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
0
result:
ok 1 number(s): "0"
Test #6:
score: 0
Accepted
time: 2ms
memory: 3844kb
input:
5000 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2...
output:
12595
result:
ok 1 number(s): "12595"
Test #7:
score: 0
Accepted
time: 1ms
memory: 3700kb
input:
5000 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100...
output:
299
result:
ok 1 number(s): "299"
Test #8:
score: 0
Accepted
time: 95ms
memory: 3880kb
input:
5000 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
224232
result:
ok 1 number(s): "224232"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3728kb
input:
5000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4...
output:
0
result:
ok 1 number(s): "0"
Test #10:
score: 0
Accepted
time: 1ms
memory: 3648kb
input:
5000 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 9...
output:
0
result:
ok 1 number(s): "0"
Test #11:
score: 0
Accepted
time: 47ms
memory: 3944kb
input:
5000 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4...
output:
499735
result:
ok 1 number(s): "499735"
Test #12:
score: 0
Accepted
time: 48ms
memory: 3872kb
input:
5000 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 9...
output:
461407
result:
ok 1 number(s): "461407"
Subtask #2:
score: 3
Accepted
Dependency #1:
100%
Accepted
Test #13:
score: 3
Accepted
time: 51ms
memory: 3924kb
input:
5000 37 39 93 78 85 71 59 21 57 96 61 59 23 16 57 90 13 59 85 70 62 67 78 97 16 60 8 48 28 53 4 24 1 97 97 98 57 87 96 91 74 54 100 76 86 86 46 39 100 57 70 76 73 55 84 93 64 6 84 39 75 94 30 15 3 31 11 34 27 10 6 81 30 76 60 9 4 47 1 88 17 71 61 30 19 10 4 57 79 37 22 74 84 8 91 58 15 45 7 98 32 46...
output:
216624
result:
ok 1 number(s): "216624"
Test #14:
score: 0
Accepted
time: 1ms
memory: 3408kb
input:
29 29 62 90 18 57 29 75 67 93 45 53 45 30 77 3 52 16 31 56 37 47 52 3 23 61 66 50 39 30
output:
110566
result:
ok 1 number(s): "110566"
Test #15:
score: 0
Accepted
time: 0ms
memory: 3464kb
input:
85 11 35 37 67 43 49 100 8 72 74 42 71 14 30 69 35 42 14 67 59 48 84 15 12 64 48 34 62 78 52 95 99 58 49 63 28 84 35 17 69 97 45 40 2 52 43 56 76 82 26 4 88 59 72 99 29 62 17 42 89 25 59 48 36 31 63 3 85 16 89 41 23 24 60 79 29 32 72 21 82 64 54 47 85 95
output:
729618
result:
ok 1 number(s): "729618"
Test #16:
score: 0
Accepted
time: 55ms
memory: 3948kb
input:
5000 13 76 46 15 50 98 93 77 31 43 84 90 6 24 14 37 73 29 43 9 4 8 14 31 91 97 72 23 73 68 70 51 78 2 19 10 38 11 16 19 64 97 47 43 65 28 88 63 50 49 23 28 37 20 68 100 21 65 37 64 96 38 40 44 100 11 62 1 16 8 57 44 87 3 86 4 73 96 56 16 77 32 52 98 27 14 7 85 28 97 19 24 5 3 26 41 56 91 25 63 55 69...
output:
959697
result:
ok 1 number(s): "959697"
Test #17:
score: 0
Accepted
time: 55ms
memory: 3928kb
input:
5000 85 23 93 33 88 25 22 89 72 56 41 51 15 91 3 20 50 67 25 64 51 22 5 60 34 88 51 62 65 1 48 73 91 65 19 2 8 33 75 12 72 87 62 89 76 45 77 23 32 82 97 76 52 3 72 66 38 40 82 60 89 21 5 70 69 58 77 81 17 70 100 61 72 92 19 74 13 13 7 8 22 79 26 74 85 46 35 42 78 74 85 7 94 34 17 42 40 40 91 46 78 9...
output:
136364
result:
ok 1 number(s): "136364"
Test #18:
score: 0
Accepted
time: 54ms
memory: 4028kb
input:
5000 57 6 44 49 8 49 13 57 78 49 39 20 52 16 8 39 46 96 23 32 21 26 50 60 41 23 49 73 87 46 34 1 36 96 75 81 64 70 83 55 88 6 45 17 8 27 11 15 46 73 29 29 6 82 96 82 96 39 27 14 49 55 21 69 13 43 60 63 38 4 56 22 84 37 38 10 32 83 46 56 70 11 78 55 10 3 92 18 34 68 12 37 62 13 63 75 82 96 93 45 12 3...
output:
171486
result:
ok 1 number(s): "171486"
Test #19:
score: 0
Accepted
time: 54ms
memory: 3936kb
input:
5000 37 53 87 68 55 84 34 69 19 67 99 81 62 75 81 30 31 34 4 91 68 36 33 77 80 11 28 13 66 76 7 26 40 63 62 77 30 95 45 48 87 92 60 62 12 51 4 71 32 6 7 77 24 49 3 48 5 18 72 10 37 46 86 92 82 78 75 39 47 70 3 39 69 29 63 76 76 96 1 44 23 54 47 31 67 35 20 71 84 54 74 24 51 57 54 85 74 48 51 21 39 5...
output:
276173
result:
ok 1 number(s): "276173"
Test #20:
score: 0
Accepted
time: 87ms
memory: 3928kb
input:
5000 96 9 3 8 5 1 9 1 7 6 1 9 3 6 7 10 3 9 5 10 2 7 8 7 6 10 8 8 8 3 4 4 1 7 7 8 7 7 6 1 4 4 10 6 6 6 6 9 10 7 10 6 3 5 4 3 4 6 4 9 5 4 10 5 3 1 1 4 7 10 6 1 10 6 10 9 4 7 1 8 7 1 1 10 9 10 4 7 9 7 2 4 4 8 1 8 5 5 7 8 2 6 7 7 9 7 5 6 6 6 3 9 7 4 4 8 2 5 2 8 6 7 10 3 1 7 1 7 2 6 10 8 7 3 5 3 4 10 8 2...
output:
190251
result:
ok 1 number(s): "190251"
Test #21:
score: 0
Accepted
time: 90ms
memory: 3940kb
input:
5000 98 6 6 5 10 8 3 7 1 3 4 10 6 4 4 7 3 9 3 9 4 8 4 1 1 7 2 3 3 8 10 1 8 2 9 10 8 1 6 9 4 7 7 3 5 8 8 3 10 9 3 8 7 10 8 10 1 5 7 4 6 8 10 4 10 1 2 1 6 8 7 4 7 3 6 4 3 6 6 6 7 2 2 8 7 4 7 5 8 7 9 4 5 3 6 1 6 1 5 3 5 9 5 2 5 5 9 7 4 3 7 6 1 8 2 3 9 8 6 3 10 9 7 7 3 2 2 10 5 5 8 6 8 6 8 7 8 9 8 10 1 ...
output:
491746
result:
ok 1 number(s): "491746"
Test #22:
score: 0
Accepted
time: 85ms
memory: 3972kb
input:
5000 100 3 3 3 8 5 2 9 2 6 1 1 5 1 3 10 10 7 5 4 1 2 5 10 4 8 1 2 5 1 8 3 1 5 9 2 8 3 5 2 2 7 2 9 6 5 7 3 2 2 7 6 2 3 2 6 8 10 2 10 9 1 5 10 9 8 7 1 7 10 10 1 2 2 9 4 3 3 7 8 2 9 6 4 5 6 5 2 8 4 5 7 4 4 7 2 10 10 1 6 8 5 10 5 10 3 1 8 8 8 6 3 9 7 8 4 4 10 5 1 7 4 3 7 3 8 8 9 4 3 6 10 9 3 1 1 7 8 3 5...
output:
47458
result:
ok 1 number(s): "47458"
Test #23:
score: 0
Accepted
time: 48ms
memory: 3972kb
input:
5000 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 97 97 97 97 97 97 97 97 97 97 97 97 ...
output:
410269
result:
ok 1 number(s): "410269"
Test #24:
score: 0
Accepted
time: 49ms
memory: 3936kb
input:
5000 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 9...
output:
89583
result:
ok 1 number(s): "89583"
Test #25:
score: 0
Accepted
time: 48ms
memory: 3940kb
input:
5000 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 98 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 96 96 96 96...
output:
403710
result:
ok 1 number(s): "403710"
Test #26:
score: 0
Accepted
time: 49ms
memory: 3944kb
input:
5000 1 1 51 1 1 1 65 1 1 21 1 1 20 1 1 1 13 1 1 1 1 2 2 2 68 2 2 2 2 2 2 2 2 2 2 2 2 2 2 8 2 43 2 2 2 2 2 2 3 3 60 3 3 3 3 63 16 3 3 3 50 59 3 3 16 75 3 6 3 3 3 3 4 10 4 85 4 4 4 46 4 70 43 4 4 4 4 4 4 4 4 4 61 4 4 4 4 5 5 5 5 5 5 5 5 5 5 57 5 5 5 8 5 5 5 5 5 5 5 5 3 6 6 6 49 6 25 6 6 6 21 6 6 6 6 6...
output:
287987
result:
ok 1 number(s): "287987"
Test #27:
score: 0
Accepted
time: 50ms
memory: 3876kb
input:
5000 1 1 3 1 1 1 1 1 61 1 1 1 1 12 1 1 24 96 1 60 1 1 1 37 1 1 1 1 2 2 2 2 42 2 2 2 2 2 2 2 2 46 69 2 2 39 3 3 3 3 3 1 3 27 3 3 3 3 3 3 3 3 3 3 43 3 3 3 3 3 3 29 3 3 57 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 12 75 4 24 4 4 89 4 4 4 24 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 37 5 5 5 5 5 5 5 41 5 5 6 6 6 6 6 ...
output:
482347
result:
ok 1 number(s): "482347"
Test #28:
score: 0
Accepted
time: 50ms
memory: 3928kb
input:
5000 1 1 85 51 96 1 1 82 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 13 2 48 2 2 2 2 2 92 8 2 2 78 2 3 69 3 20 3 3 3 3 3 3 3 3 3 3 3 70 3 3 3 62 3 26 3 4 4 33 4 4 4 4 4 4 26 4 84 4 85 4 4 4 4 32 5 100 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 75 5 5 5 5 5 89 5 5 5 22 5 5 5 5 6 6 6 6 6 6 60 19 6 6 55 6 100 6 6 6 6 6...
output:
714189
result:
ok 1 number(s): "714189"
Test #29:
score: 0
Accepted
time: 0ms
memory: 3436kb
input:
3 100 1 100
output:
24750
result:
ok 1 number(s): "24750"
Test #30:
score: 0
Accepted
time: 0ms
memory: 3360kb
input:
3 1 2 3
output:
0
result:
ok 1 number(s): "0"
Test #31:
score: 0
Accepted
time: 1ms
memory: 3436kb
input:
3 3 2 1
output:
0
result:
ok 1 number(s): "0"
Test #32:
score: 0
Accepted
time: 0ms
memory: 3412kb
input:
3 100 100 100
output:
0
result:
ok 1 number(s): "0"
Test #33:
score: 0
Accepted
time: 1ms
memory: 3440kb
input:
5 100 1 2 1 98
output:
57420
result:
ok 1 number(s): "57420"
Subtask #3:
score: 0
Time Limit Exceeded
Dependency #2:
100%
Accepted
Test #34:
score: 0
Time Limit Exceeded
input:
5000 407609 427494 229544 174201 237923 974106 83376 278833 559089 156614 683522 171512 683333 140787 568442 381473 161683 880608 849863 503926 181414 366081 829869 14514 752859 488252 473987 428487 879011 543082 18678 52954 281414 582364 737092 67586 693723 150612 421762 168780 815185 837639 336407...
output:
result:
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Time Limit Exceeded
Dependency #2:
100%
Accepted
Test #62:
score: 0
Time Limit Exceeded
input:
1000000 62 1 73 90 31 17 19 13 36 87 67 10 97 21 84 61 55 9 32 55 63 32 72 52 5 76 44 40 90 40 93 77 74 83 30 64 59 36 50 72 27 24 32 10 54 91 54 35 2 23 39 33 82 60 9 22 52 59 63 71 15 18 52 62 21 81 35 40 57 85 52 60 22 51 37 43 67 93 79 50 77 94 61 31 44 73 72 36 26 86 26 23 27 93 74 52 11 93 90 ...
output:
result:
Subtask #6:
score: 0
Skipped
Dependency #3:
0%
Subtask #7:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
0%