109982024-06-02 09:38:04szilWatch Towerscpp17Accepted 100/100128ms17732 KiB
#include <bits/stdc++.h>

using ll = long long;
using ld = long double;
using namespace std;

const int MAXN = 200'001;

struct P {
    ll a, b;

    P() : a(0), b(0) {}
    P(ll x, ll y) : a(x), b(y) {}

    ll f(ll x) {
        return a*x+b;
    }
};

ll h[MAXN];
P tree[4*MAXN];

void add_line(int v, int tl, int tr, P p) {
    int tm = (tl + tr) / 2;

    bool lef = tree[v].f(tl) < p.f(tl);
    bool mid = tree[v].f(tm) < p.f(tm);

    if (mid) swap(tree[v], p);
    if (tl + 1 == tr) return;

    if (lef != mid) add_line(2*v, tl, tm, p);
    else add_line(2*v+1, tm, tr, p);
}

ll get_height(int v, int tl, int tr, int x) {
    if (tl + 1 == tr) return tree[v].f(x);
    int tm = (tl + tr) / 2;
    if (x < tm) return max(tree[v].f(x), get_height(2*v, tl, tm, x));
    else return max(tree[v].f(x), get_height(2*v+1, tm, tr, x));
}

void solve() {
    int n; cin >> n;
    for (int i = 1; i <= n; i++) cin >> h[i];
    for (int i = 2; i <= n; i++) {
        ll a = h[i] - h[i-1];
        ll b = h[i] - i * a;
        add_line(1, 1, n, {a, b});
    }
    for (int i = 1; i <= n; i++) {
        cout << max(0ll, get_height(1, 1, n, i)-h[i]) << " ";
    }
    cout << "\n";
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted9ms12900 KiB
2Accepted9ms12900 KiB
subtask220/20
3Accepted13ms12904 KiB
4Accepted10ms13048 KiB
5Accepted13ms12900 KiB
6Accepted13ms13028 KiB
7Accepted13ms12892 KiB
8Accepted13ms12900 KiB
9Accepted10ms12828 KiB
10Accepted12ms12852 KiB
11Accepted10ms12772 KiB
12Accepted9ms12868 KiB
13Accepted13ms12900 KiB
14Accepted10ms12920 KiB
15Accepted12ms12772 KiB
16Accepted13ms13028 KiB
17Accepted13ms12916 KiB
18Accepted13ms13048 KiB
19Accepted10ms12944 KiB
subtask331/31
20Accepted13ms12904 KiB
21Accepted10ms13048 KiB
22Accepted13ms12900 KiB
23Accepted13ms13028 KiB
24Accepted13ms12892 KiB
25Accepted13ms12900 KiB
26Accepted10ms12828 KiB
27Accepted12ms12852 KiB
28Accepted10ms12772 KiB
29Accepted9ms12868 KiB
30Accepted13ms12900 KiB
31Accepted10ms12920 KiB
32Accepted12ms12772 KiB
33Accepted13ms13028 KiB
34Accepted13ms12916 KiB
35Accepted13ms13048 KiB
36Accepted10ms12944 KiB
37Accepted14ms12964 KiB
38Accepted13ms13188 KiB
39Accepted14ms13072 KiB
40Accepted14ms13028 KiB
41Accepted13ms12828 KiB
42Accepted13ms12900 KiB
43Accepted13ms12920 KiB
44Accepted13ms12964 KiB
45Accepted14ms12976 KiB
46Accepted14ms12900 KiB
47Accepted13ms12956 KiB
48Accepted13ms13028 KiB
subtask449/49
49Accepted13ms12904 KiB
50Accepted10ms13048 KiB
51Accepted13ms12900 KiB
52Accepted13ms13028 KiB
53Accepted13ms12892 KiB
54Accepted13ms12900 KiB
55Accepted10ms12828 KiB
56Accepted12ms12852 KiB
57Accepted10ms12772 KiB
58Accepted9ms12868 KiB
59Accepted13ms12900 KiB
60Accepted10ms12920 KiB
61Accepted12ms12772 KiB
62Accepted13ms13028 KiB
63Accepted13ms12916 KiB
64Accepted13ms13048 KiB
65Accepted10ms12944 KiB
66Accepted14ms12964 KiB
67Accepted13ms13188 KiB
68Accepted14ms13072 KiB
69Accepted14ms13028 KiB
70Accepted13ms12828 KiB
71Accepted13ms12900 KiB
72Accepted13ms12920 KiB
73Accepted13ms12964 KiB
74Accepted14ms12976 KiB
75Accepted14ms12900 KiB
76Accepted13ms12956 KiB
77Accepted13ms13028 KiB
78Accepted13ms13064 KiB
79Accepted13ms12756 KiB
80Accepted13ms13072 KiB
81Accepted12ms12900 KiB
82Accepted13ms13028 KiB
83Accepted16ms13084 KiB
84Accepted14ms13156 KiB
85Accepted14ms13324 KiB
86Accepted119ms17588 KiB
87Accepted119ms17668 KiB
88Accepted122ms17656 KiB
89Accepted123ms17544 KiB
90Accepted120ms17636 KiB
91Accepted123ms17732 KiB
92Accepted123ms17636 KiB
93Accepted120ms17728 KiB
94Accepted128ms16740 KiB
95Accepted123ms16848 KiB
96Accepted123ms16744 KiB
97Accepted123ms16892 KiB