제출 #1301722

#제출 시각아이디문제언어결과실행 시간메모리
1301722sigmaligmaGrowing Vegetables is Fun 4 (JOI21_ho_t1)C++20
0 / 100
2 ms572 KiB
#include <bits/stdc++.h> using namespace std; #define fastio \ ios::sync_with_stdio(false); \ cin.tie(nullptr); #define s(x) x.size() #define sort(x) sort(x.begin(), x.end()) #define rsort(x) sort(x.rbegin(), x.rend()) #define all(x) (x).begin(), (x).end() #define pb push_back #define fi first #define se second #define INF 1e9 #define INFL 1e18 #define rep(a, b) for (int a = 0; a < b; a++) using ll = long long; using pii = pair<int, int>; void solve() { int n; cin >> n; vector<int> v(n); for (int i = 0; i < n; ++i) { cin >> v[i]; } vector<int> max_pref(n), max_suff(n); vector<int> tymczasowy = v; int poprzedni = 0; for (int i = 1; i < n; i++) { max_pref[i] = max_pref[i - 1]; if (tymczasowy[i] < tymczasowy[i - 1]) { max_pref[i] = max(max_pref[i], tymczasowy[i - 1] - tymczasowy[i] + 1)+poprzedni; poprzedni = 0; tymczasowy[i] = tymczasowy[i - 1] + 1; } else{ poprzedni = max_pref[i]; } } vector<int>porownaj = tymczasowy; tymczasowy = v; poprzedni = 0; for (int i = n - 2; i >= 0; i--) { max_suff[i] = max_suff[i + 1]; if (tymczasowy[i] < tymczasowy[i + 1]) { max_suff[i] = max(max_suff[i], tymczasowy[i + 1] - tymczasowy[i] + 1)+poprzedni; poprzedni = 0; tymczasowy[i] = tymczasowy[i + 1] + 1; } else{ poprzedni = max_suff[i]; } } int minn = 1e9; // for (int i = 0; i < n; i++) { // cout << porownaj[i] << ' '; // } // cout << endl; // for (int i = 0; i < n; i++) { // cout << tymczasowy[i] << ' '; // } // cout << endl; for (int i = 0; i < n-1; i++) { if(porownaj[i]==tymczasowy[i+1]) minn = min(max(max_pref[i], max_suff[i+1])+1, minn); else minn = min(max(max_pref[i], max_suff[i+1]), minn); } cout << minn << endl; } int main() { fastio; int t = 1; // cin >> t; while (t--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...