160682025-03-30 11:42:14szilMetróutasokcpp17Részben helyes 25/10041ms2804 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const ll INF = 1e15;

void solve() {
    int n; cin >> n;
    vector<ll> v(n+1), pref(n+2), suff(n+2);
    for (int i = 1; i <= n; i++) cin >> v[i];
    for (int i = 1; i <= n; i++) pref[i] = pref[i-1] + v[i];
    for (int i = n; i >= 1; i--) suff[i] = suff[i+1] + v[i];

    {
        auto f = [&](ll goal) {
            ll curr = 0;
            for (int i = 1; i <= n; i++) {
                if (curr + v[i] > goal) {
                    ll need = (curr + v[i] - goal + 1) / 2;
                    if (need > min(v[i], curr)) {
                        return false;
                    }
                    curr += v[i] - max(0ll, 2 * need);
                } else {
                    curr += v[i];
                }
            }

            return true;
        };

        auto calc = [&]() {
            ll lo = 0, hi = INF;
            while (lo < hi) {
                ll mid = (lo + hi) / 2;
                if (f(mid)) {
                    hi = mid;
                } else {
                    lo = mid + 1;
                }
            }
            reverse(v.begin()+1, v.end());
            return lo;
        };

        ll ans = calc();
        ans = min(ans, calc());

        cout << ans << "\n";
    }

    {
        ll ans = 0;
        for (int i = 1; i <= n; i++) {
            if (pref[i-1] >= suff[i]) ans = max(ans, suff[i]);
            if (suff[i] >= pref[i-1]) ans = max(ans, pref[i-1]);
        }
        cout << ans << "\n";
    }
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int t = 1; 
    // cin >> t;
    while (t--) solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Részben helyes37ms2612 KiB
subtask23/12
3Elfogadva1ms508 KiB
4Elfogadva1ms316 KiB
5Részben helyes1ms316 KiB
6Részben helyes1ms500 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms316 KiB
9Részben helyes1ms404 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms316 KiB
13Részben helyes1ms316 KiB
14Részben helyes1ms316 KiB
15Elfogadva1ms548 KiB
16Elfogadva1ms380 KiB
subtask33/12
17Elfogadva1ms508 KiB
18Elfogadva1ms316 KiB
19Részben helyes1ms316 KiB
20Részben helyes1ms500 KiB
21Elfogadva1ms316 KiB
22Elfogadva1ms316 KiB
23Részben helyes1ms404 KiB
24Elfogadva1ms316 KiB
25Elfogadva1ms316 KiB
26Elfogadva1ms316 KiB
27Elfogadva1ms316 KiB
28Részben helyes1ms316 KiB
29Elfogadva1ms316 KiB
30Részben helyes1ms316 KiB
31Részben helyes1ms316 KiB
32Részben helyes1ms316 KiB
33Részben helyes1ms316 KiB
34Részben helyes1ms316 KiB
35Részben helyes1ms316 KiB
36Elfogadva1ms316 KiB
37Részben helyes1ms316 KiB
38Részben helyes1ms316 KiB
39Részben helyes1ms316 KiB
40Elfogadva1ms532 KiB
41Részben helyes1ms316 KiB
42Elfogadva1ms548 KiB
43Elfogadva1ms548 KiB
44Elfogadva1ms380 KiB
45Elfogadva1ms360 KiB
46Elfogadva1ms328 KiB
47Részben helyes1ms316 KiB
48Elfogadva1ms316 KiB
49Elfogadva1ms316 KiB
subtask44/16
50Elfogadva1ms508 KiB
51Elfogadva1ms316 KiB
52Részben helyes1ms316 KiB
53Részben helyes1ms500 KiB
54Elfogadva1ms316 KiB
55Elfogadva1ms316 KiB
56Részben helyes1ms404 KiB
57Elfogadva1ms316 KiB
58Elfogadva1ms316 KiB
59Elfogadva1ms316 KiB
60Elfogadva1ms316 KiB
61Részben helyes1ms316 KiB
62Elfogadva1ms316 KiB
63Részben helyes1ms316 KiB
64Részben helyes1ms316 KiB
65Részben helyes1ms316 KiB
66Részben helyes1ms316 KiB
67Részben helyes1ms316 KiB
68Részben helyes1ms316 KiB
69Elfogadva1ms316 KiB
70Elfogadva1ms368 KiB
71Részben helyes1ms316 KiB
72Részben helyes1ms316 KiB
73Részben helyes1ms540 KiB
74Részben helyes1ms316 KiB
75Elfogadva1ms508 KiB
76Részben helyes1ms316 KiB
77Elfogadva1ms524 KiB
78Részben helyes1ms316 KiB
79Részben helyes1ms556 KiB
80Részben helyes1ms316 KiB
81Részben helyes1ms316 KiB
82Részben helyes1ms316 KiB
83Elfogadva1ms532 KiB
84Részben helyes1ms316 KiB
85Elfogadva1ms548 KiB
86Elfogadva1ms548 KiB
87Elfogadva1ms380 KiB
88Elfogadva1ms360 KiB
89Elfogadva1ms328 KiB
90Részben helyes1ms316 KiB
91Elfogadva1ms316 KiB
92Elfogadva1ms316 KiB
subtask515/60
93Elfogadva1ms508 KiB
94Részben helyes37ms2612 KiB
95Elfogadva1ms316 KiB
96Részben helyes1ms316 KiB
97Részben helyes1ms500 KiB
98Elfogadva1ms316 KiB
99Elfogadva1ms316 KiB
100Részben helyes1ms404 KiB
101Elfogadva1ms316 KiB
102Elfogadva1ms316 KiB
103Elfogadva1ms316 KiB
104Elfogadva1ms316 KiB
105Részben helyes1ms316 KiB
106Elfogadva1ms316 KiB
107Részben helyes1ms316 KiB
108Részben helyes1ms316 KiB
109Részben helyes1ms316 KiB
110Részben helyes1ms316 KiB
111Részben helyes1ms316 KiB
112Részben helyes1ms316 KiB
113Elfogadva1ms316 KiB
114Elfogadva1ms368 KiB
115Részben helyes1ms316 KiB
116Részben helyes1ms316 KiB
117Részben helyes1ms540 KiB
118Részben helyes1ms316 KiB
119Elfogadva1ms508 KiB
120Részben helyes1ms316 KiB
121Elfogadva1ms524 KiB
122Részben helyes1ms316 KiB
123Részben helyes1ms556 KiB
124Részben helyes39ms2788 KiB
125Részben helyes37ms2788 KiB
126Részben helyes41ms2788 KiB
127Részben helyes35ms2804 KiB
128Részben helyes39ms2796 KiB
129Részben helyes41ms2612 KiB
130Részben helyes37ms2768 KiB
131Elfogadva41ms2804 KiB
132Részben helyes41ms2784 KiB
133Részben helyes1ms316 KiB
134Részben helyes1ms316 KiB
135Részben helyes1ms316 KiB
136Elfogadva1ms532 KiB
137Részben helyes1ms316 KiB
138Elfogadva1ms548 KiB
139Elfogadva1ms548 KiB
140Elfogadva1ms380 KiB
141Elfogadva1ms360 KiB
142Elfogadva1ms328 KiB
143Részben helyes1ms316 KiB
144Elfogadva25ms2612 KiB
145Elfogadva21ms2356 KiB
146Részben helyes25ms2612 KiB
147Elfogadva14ms1588 KiB
148Részben helyes24ms2608 KiB
149Elfogadva24ms2356 KiB
150Elfogadva1ms316 KiB
151Elfogadva1ms316 KiB
152Elfogadva24ms2356 KiB