제출 #921181

#제출 시각아이디문제언어결과실행 시간메모리
921181BBart888Hacker (BOI15_hac)C++14
100 / 100
283 ms22292 KiB
#include <cstdio> #include <iostream> #include <vector> #include <list> #include <string> #include <set> #include <map> #include <algorithm> #include <fstream> #include <cmath> #include <queue> #include <stack> #include <cassert> #include <cstring> #include <climits> #include <functional> #include <cstdlib> #include <complex> #include <array> #include <iomanip> #include <bitset> #include <unordered_map> #include <random> #define fileIO(name) if(fopen(name".in", "r")) {freopen(name".in", "r", stdin); freopen(name".out", "w", stdout);} using namespace std; const int MAXN = 1e6 + 111; using ll = long long; const int P = 31; const ll mod1 = 1e9 + 7; const ll mod2 = 998244353; using ld = long double; const ld EPS = 1e-5; using pii = pair<int, int>; typedef complex<ll> Point; int n; int v[MAXN]; ll ans; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); //fileIO("cardgame"); cin >> n; for (int i = 1; i <= n; i++) cin >> v[i]; for (int i = n + 1; i <= 2 * n; i++) v[i] = v[i - n]; for (int i = 1; i <= 2 * n; i++) v[i] = v[i - 1] + v[i]; vector<ll> ret(n + 1, 1e18); int SZ = (n + 1) / 2; multiset<ll> vals; for (int i = 1; i <= 2 * n; i++) { if (i + SZ - 1 <= 2 * n) vals.insert(v[i + SZ - 1] - v[i - 1]); if (i > SZ) vals.erase(vals.find(v[i-1] - v[i-SZ-1])); int prv = ((i - 1) % n) + 1; ret[prv] = min(ret[prv], *vals.begin()); } for (int i = 1; i <= n; i++) ans = max(ans, ret[i]); cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...