109982024-06-02 09:38:04szilWatch Towerscpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva9ms12900 KiB
2Elfogadva9ms12900 KiB
subtask220/20
3Elfogadva13ms12904 KiB
4Elfogadva10ms13048 KiB
5Elfogadva13ms12900 KiB
6Elfogadva13ms13028 KiB
7Elfogadva13ms12892 KiB
8Elfogadva13ms12900 KiB
9Elfogadva10ms12828 KiB
10Elfogadva12ms12852 KiB
11Elfogadva10ms12772 KiB
12Elfogadva9ms12868 KiB
13Elfogadva13ms12900 KiB
14Elfogadva10ms12920 KiB
15Elfogadva12ms12772 KiB
16Elfogadva13ms13028 KiB
17Elfogadva13ms12916 KiB
18Elfogadva13ms13048 KiB
19Elfogadva10ms12944 KiB
subtask331/31
20Elfogadva13ms12904 KiB
21Elfogadva10ms13048 KiB
22Elfogadva13ms12900 KiB
23Elfogadva13ms13028 KiB
24Elfogadva13ms12892 KiB
25Elfogadva13ms12900 KiB
26Elfogadva10ms12828 KiB
27Elfogadva12ms12852 KiB
28Elfogadva10ms12772 KiB
29Elfogadva9ms12868 KiB
30Elfogadva13ms12900 KiB
31Elfogadva10ms12920 KiB
32Elfogadva12ms12772 KiB
33Elfogadva13ms13028 KiB
34Elfogadva13ms12916 KiB
35Elfogadva13ms13048 KiB
36Elfogadva10ms12944 KiB
37Elfogadva14ms12964 KiB
38Elfogadva13ms13188 KiB
39Elfogadva14ms13072 KiB
40Elfogadva14ms13028 KiB
41Elfogadva13ms12828 KiB
42Elfogadva13ms12900 KiB
43Elfogadva13ms12920 KiB
44Elfogadva13ms12964 KiB
45Elfogadva14ms12976 KiB
46Elfogadva14ms12900 KiB
47Elfogadva13ms12956 KiB
48Elfogadva13ms13028 KiB
subtask449/49
49Elfogadva13ms12904 KiB
50Elfogadva10ms13048 KiB
51Elfogadva13ms12900 KiB
52Elfogadva13ms13028 KiB
53Elfogadva13ms12892 KiB
54Elfogadva13ms12900 KiB
55Elfogadva10ms12828 KiB
56Elfogadva12ms12852 KiB
57Elfogadva10ms12772 KiB
58Elfogadva9ms12868 KiB
59Elfogadva13ms12900 KiB
60Elfogadva10ms12920 KiB
61Elfogadva12ms12772 KiB
62Elfogadva13ms13028 KiB
63Elfogadva13ms12916 KiB
64Elfogadva13ms13048 KiB
65Elfogadva10ms12944 KiB
66Elfogadva14ms12964 KiB
67Elfogadva13ms13188 KiB
68Elfogadva14ms13072 KiB
69Elfogadva14ms13028 KiB
70Elfogadva13ms12828 KiB
71Elfogadva13ms12900 KiB
72Elfogadva13ms12920 KiB
73Elfogadva13ms12964 KiB
74Elfogadva14ms12976 KiB
75Elfogadva14ms12900 KiB
76Elfogadva13ms12956 KiB
77Elfogadva13ms13028 KiB
78Elfogadva13ms13064 KiB
79Elfogadva13ms12756 KiB
80Elfogadva13ms13072 KiB
81Elfogadva12ms12900 KiB
82Elfogadva13ms13028 KiB
83Elfogadva16ms13084 KiB
84Elfogadva14ms13156 KiB
85Elfogadva14ms13324 KiB
86Elfogadva119ms17588 KiB
87Elfogadva119ms17668 KiB
88Elfogadva122ms17656 KiB
89Elfogadva123ms17544 KiB
90Elfogadva120ms17636 KiB
91Elfogadva123ms17732 KiB
92Elfogadva123ms17636 KiB
93Elfogadva120ms17728 KiB
94Elfogadva128ms16740 KiB
95Elfogadva123ms16848 KiB
96Elfogadva123ms16744 KiB
97Elfogadva123ms16892 KiB