제출 #382634

#제출 시각아이디문제언어결과실행 시간메모리
382634jainbot27Growing Vegetables is Fun 4 (JOI21_ho_t1)C++17
0 / 100
219 ms364 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define F0R(i, n) for(int i=0; i<n; i++) #define FOR(i, a, b) for(int i=a; i<b; i++) #define ROF(i, a, b) for(int i=b-1; i>=a; i--) #define siz(x) (int) x.size() const int mxN = 2e5+10; int n; ll a[mxN]; //ll p[mxN], s[mxN]; ll ans = 1e18; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; FOR(i, 1, n+1) cin >> a[i]; //FOR(i, 2, n+1){ // p[i] = p[i-1]+max(a[i-1]-a[i]+1, 0LL); //} //ROF(i, 1, n){ // s[i] = s[i+1]+max(a[i+1]-a[i]+1, 0LL); //} // we have some costs on the prefixs and the suffixs // what to do for the middle element: // we care about //FOR(i, 1, n+1){ // // set costs // ll cur = p[i-1]+s[i+1]; //} FOR(i, 1, n+1){ priority_queue<ll> sufs, prefs; //cout << "I: " << i << endl; FOR(j, 2, i+1){ prefs.push(max(a[j-1]-a[j]+1, 0LL)); //cout << a[j-1]-a[j]+1 << endl; } //cout << "---\n"; FOR(j, i, n){ sufs.push(max(a[j+1]-a[j]+1, 0LL)); //cout << a[j+1]-a[j]+1 << endl; } ll cur = 0; while(siz(sufs)&&siz(prefs)){ cur += max(sufs.top(), prefs.top()); sufs.pop(); prefs.pop(); } while(siz(sufs)) cur += sufs.top(), sufs.pop(); while(siz(prefs)) cur += prefs.top(), prefs.pop(); ans = min(ans, cur); } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...