107722024-04-11 18:41:06mraronMetróutasokcpp17Elfogadva 100/10056ms6316 KiB
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<cassert>
#include<unordered_map>
#include<unordered_set>
#include<functional>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<sstream>
#include<iomanip>
#include<cstdio>
#include<cstdlib>
#include<numeric>
#include<random>
#include<chrono>
#include<bitset>
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
//using namespace __gnu_pbds;

#define all(x) (x).begin(), (x).end()
#define pb push_back
#define eb emplace_back
#define xx first
#define yy second
#define sz(x) (int)(x).size()
#define gc getchar
#define IO ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define mp make_pair
#define ins insert
#define chkmn(x,y) (x)=min((x), (y))
#define chkmx(x,y) (x)=max((x), (y))

#ifndef ONLINE_JUDGE
#  define LOG(x) (cerr << #x << " = " << (x) << endl)
#else
#  define LOG(x) ((void)0)
#endif

using ll = long long;
using ull = unsigned long long ;
using ld = long double ;
using str = string;
//using ordered_set=tree<pair<int,int>, null_type, less<pair<int,int>>, rb_tree_tag, tree_order_statistics_node_update>;

const double PI=acos(-1);
const ll INF = 1LL<<62;
const ll MINF = -(1LL<<62);

template<typename T> T getint() {
    T val=0;
    char c;
    
    bool neg=false;
    while((c=gc()) && !(c>='0' && c<='9')) {
        neg|=c=='-';
    }

    do {
        val=(val*10)+c-'0';
    } while((c=gc()) && (c>='0' && c<='9'));

    return val*(neg?-1:1);
}

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); uniform_int_distribution<int>(0, n-1)(rng)


int main() {
    IO;
    int n;
    cin>>n;
    vector<ll> a(n);
    for(int i=0;i<n;++i) cin>>a[i];
    ll sum=accumulate(all(a), 0LL)/2;
    ll mn=1LL<<60, mx=0, curr=0;
    for(int i=0;i<n;++i) {
        ll can_up=min(a[i], sum);
        ll can_down=min(curr, a[i]-can_up);
        curr+=can_up-can_down;
        chkmx(mx, curr);
        sum-=can_up;
    }

    auto test=[&](ll currMn) -> bool {
        bool ok=true;
        ll sum=accumulate(all(a), 0LL)/2;
        ll curr=0;
        for(int j=0;j<n && ok;++j) {
            ll can_up=min({a[j], sum, (currMn+a[j]-curr)/2});
            ll can_down=min(curr, a[j]-can_up);
            ok&=can_up+can_down==a[j] && can_up>=0 && can_down>=0;
            if(j==0) ok&=can_down==0;
            if(j==n-1) ok&=can_up==0;
            curr+=can_up-can_down;
            sum-=can_up;
        }
        return ok;
    };

    for(ll i=60;i>=0;i--) {
        ll currMn = mn - (1LL<<i);
        if(currMn>0 && test(currMn)) {
            mn=currMn;
        }
    }

    cout<<mn<<"\n";
    cout<<mx<<"\n";
    
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva54ms3516 KiB
subtask212/12
3Elfogadva3ms2540 KiB
4Elfogadva3ms2496 KiB
5Elfogadva3ms2816 KiB
6Elfogadva3ms2672 KiB
7Elfogadva3ms2812 KiB
8Elfogadva3ms2900 KiB
9Elfogadva3ms3128 KiB
10Elfogadva3ms3196 KiB
11Elfogadva3ms3220 KiB
12Elfogadva3ms3288 KiB
13Elfogadva3ms3396 KiB
14Elfogadva3ms3400 KiB
15Elfogadva2ms3272 KiB
16Elfogadva3ms3376 KiB
subtask312/12
17Elfogadva3ms2540 KiB
18Elfogadva3ms2496 KiB
19Elfogadva3ms2816 KiB
20Elfogadva3ms2672 KiB
21Elfogadva3ms2812 KiB
22Elfogadva3ms2900 KiB
23Elfogadva3ms3128 KiB
24Elfogadva3ms3196 KiB
25Elfogadva3ms3220 KiB
26Elfogadva3ms3288 KiB
27Elfogadva3ms3616 KiB
28Elfogadva3ms3488 KiB
29Elfogadva3ms3716 KiB
30Elfogadva3ms3716 KiB
31Elfogadva3ms3704 KiB
32Elfogadva2ms3700 KiB
33Elfogadva3ms3828 KiB
34Elfogadva3ms4188 KiB
35Elfogadva3ms4188 KiB
36Elfogadva3ms4272 KiB
37Elfogadva3ms3396 KiB
38Elfogadva3ms3400 KiB
39Elfogadva3ms4272 KiB
40Elfogadva3ms4272 KiB
41Elfogadva3ms4368 KiB
42Elfogadva3ms4372 KiB
43Elfogadva2ms3272 KiB
44Elfogadva3ms3376 KiB
45Elfogadva3ms4272 KiB
46Elfogadva3ms4272 KiB
47Elfogadva3ms4364 KiB
48Elfogadva3ms4368 KiB
49Elfogadva3ms4368 KiB
subtask416/16
50Elfogadva3ms2540 KiB
51Elfogadva3ms2496 KiB
52Elfogadva3ms2816 KiB
53Elfogadva3ms2672 KiB
54Elfogadva3ms2812 KiB
55Elfogadva3ms2900 KiB
56Elfogadva3ms3128 KiB
57Elfogadva3ms3196 KiB
58Elfogadva3ms3220 KiB
59Elfogadva3ms3288 KiB
60Elfogadva3ms3616 KiB
61Elfogadva3ms3488 KiB
62Elfogadva3ms3716 KiB
63Elfogadva3ms3716 KiB
64Elfogadva3ms3704 KiB
65Elfogadva2ms3700 KiB
66Elfogadva3ms3828 KiB
67Elfogadva3ms4188 KiB
68Elfogadva3ms4188 KiB
69Elfogadva3ms4272 KiB
70Elfogadva3ms4400 KiB
71Elfogadva3ms4484 KiB
72Elfogadva3ms4552 KiB
73Elfogadva3ms4548 KiB
74Elfogadva3ms4676 KiB
75Elfogadva3ms4772 KiB
76Elfogadva3ms4920 KiB
77Elfogadva3ms4760 KiB
78Elfogadva3ms4760 KiB
79Elfogadva3ms5008 KiB
80Elfogadva3ms3396 KiB
81Elfogadva3ms3400 KiB
82Elfogadva3ms4272 KiB
83Elfogadva3ms4272 KiB
84Elfogadva3ms4368 KiB
85Elfogadva3ms4372 KiB
86Elfogadva2ms3272 KiB
87Elfogadva3ms3376 KiB
88Elfogadva3ms4272 KiB
89Elfogadva3ms4272 KiB
90Elfogadva3ms4364 KiB
91Elfogadva3ms4368 KiB
92Elfogadva3ms4368 KiB
subtask560/60
93Elfogadva3ms2540 KiB
94Elfogadva54ms6228 KiB
95Elfogadva3ms2496 KiB
96Elfogadva3ms2816 KiB
97Elfogadva3ms2672 KiB
98Elfogadva3ms2812 KiB
99Elfogadva3ms2900 KiB
100Elfogadva3ms3128 KiB
101Elfogadva3ms3196 KiB
102Elfogadva3ms3220 KiB
103Elfogadva3ms3288 KiB
104Elfogadva3ms3616 KiB
105Elfogadva3ms3488 KiB
106Elfogadva3ms3716 KiB
107Elfogadva3ms3716 KiB
108Elfogadva3ms3704 KiB
109Elfogadva2ms3700 KiB
110Elfogadva3ms3828 KiB
111Elfogadva3ms4188 KiB
112Elfogadva3ms4188 KiB
113Elfogadva3ms4272 KiB
114Elfogadva3ms4400 KiB
115Elfogadva3ms4484 KiB
116Elfogadva3ms4552 KiB
117Elfogadva3ms4548 KiB
118Elfogadva3ms4676 KiB
119Elfogadva3ms4772 KiB
120Elfogadva3ms4920 KiB
121Elfogadva3ms4760 KiB
122Elfogadva3ms4760 KiB
123Elfogadva3ms5008 KiB
124Elfogadva43ms6100 KiB
125Elfogadva48ms6096 KiB
126Elfogadva45ms6172 KiB
127Elfogadva54ms6160 KiB
128Elfogadva46ms6096 KiB
129Elfogadva56ms6164 KiB
130Elfogadva56ms6164 KiB
131Elfogadva46ms6164 KiB
132Elfogadva56ms6096 KiB
133Elfogadva3ms3396 KiB
134Elfogadva3ms3400 KiB
135Elfogadva3ms4272 KiB
136Elfogadva3ms4272 KiB
137Elfogadva3ms4368 KiB
138Elfogadva3ms4372 KiB
139Elfogadva2ms3272 KiB
140Elfogadva3ms3376 KiB
141Elfogadva3ms4272 KiB
142Elfogadva3ms4272 KiB
143Elfogadva3ms4364 KiB
144Elfogadva43ms6100 KiB
145Elfogadva41ms5968 KiB
146Elfogadva48ms6228 KiB
147Elfogadva30ms5668 KiB
148Elfogadva43ms6168 KiB
149Elfogadva45ms6316 KiB
150Elfogadva3ms4368 KiB
151Elfogadva3ms4368 KiB
152Elfogadva41ms6172 KiB