Submission #377371

#TimeUsernameProblemLanguageResultExecution timeMemory
377371pavementGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++17
100 / 100
200 ms6764 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #ifdef _WIN32 #define getchar_unlocked _getchar_nolock #endif #define int long long #define mp make_pair #define mt make_tuple #define pb push_back #define ppb pop_back #define eb emplace_back #define g0(a) get<0>(a) #define g1(a) get<1>(a) #define g2(a) get<2>(a) #define g3(a) get<3>(a) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef double db; typedef long long ll; typedef long double ld; typedef pair<int, int> ii; typedef tuple<int, int, int> iii; typedef tuple<int, int, int, int> iiii; typedef tree<ii, null_type, less<ii>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; int N, ans = LLONG_MAX, prf[200005], suf[200005], A[200005], OA[200005]; main() { ios::sync_with_stdio(0); cin.tie(0); cin >> N; for (int i = 1; i <= N; i++) cin >> A[i], OA[i] = A[i]; for (int i = 1, yes = 0; i <= N; i++) { A[i] += yes; prf[i] = prf[i - 1]; if (A[i] <= A[i - 1]) { prf[i] += A[i - 1] - A[i] + 1; yes += A[i - 1] - A[i] + 1; A[i] = A[i - 1] + 1; } } for (int i = 1; i <= N; i++) A[i] = OA[i]; for (int i = N, yes = 0; i >= 1; i--) { A[i] += yes; suf[i] = suf[i + 1]; if (A[i] <= A[i + 1]) { suf[i] += A[i + 1] - A[i] + 1; yes += A[i + 1] - A[i] + 1; A[i] = A[i + 1] + 1; } } for (int i = 1; i <= N; i++) ans = min(ans, max(prf[i], suf[i])); cout << ans << '\n'; }

Compilation message (stderr)

Main.cpp:30:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   30 | main() {
      |      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...