QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#125801#6626. Real Mountainsbashkort6 95ms4028kbC++202.4kb2023-07-17 17:46:432023-07-17 17:46:44

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-17 17:46:44]
  • 评测
  • 测评结果:6
  • 用时:95ms
  • 内存:4028kb
  • [2023-07-17 17:46:43]
  • 提交

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;
}

Details

Tip: Click on the bar to expand more detailed information

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%