Submission #1047410

#TimeUsernameProblemLanguageResultExecution timeMemory
1047410PagodePaivaReal Mountains (CCO23_day1problem2)C++17
10 / 25
900 ms19044 KiB
#include<bits/stdc++.h> #define resp1 resp #define int long long using namespace std; const int N = 1000010; int res[N]; const int mod = 1e6+3; int32_t main(){ int n; cin >> n; vector <int> v; int idxmax = 0; for(int i = 0;i < n;i++){ int x; cin >> x; v.push_back(x); if(x > v[idxmax]) idxmax = i; } int pref = 0; for(int i = 0;i < idxmax;i++){ pref = max(pref, v[i]); res[i] = pref; } pref = 0; for(int i = n-1;i > idxmax;i--){ pref = max(pref, v[i]); res[i] = pref; } res[idxmax] = v[idxmax]; int resposta = 0; for(int val = 1;val <= 100;val++){ int st = n, ed = -1; for(int i = 0;i < n;i++){ if(v[i] == val and v[i] != res[i]){ st = min(st, i); ed = max(ed, i); } } if(st == n) continue; //cout << val << ' '; int resp = 101; for(int i = 0;i < st;i++){ if(v[i] <= val) continue; resp = min(resp, v[i]); } int resp2 = 101; for(int i = n-1;i > st;i--){ if(v[i] <= val) continue; resp2 = min(resp2, v[i]); } int resp3 = 101, resp4 = 101; for(int i = 0;i < ed;i++){ if(v[i] <= val) continue; resp3 = min(resp3, v[i]); } for(int i = n-1;i > ed;i--){ if(v[i] <= val) continue; resp4 = min(resp4, v[i]); } if(st == ed){ v[st] = val+1; resposta += resp+resp2+val; continue; } if(resp2 < resp3){ resposta += resp1+resp2+val; v[st] = val+1; resposta += val+1+val+resp4; v[ed] = val+1; } else{ resposta += resp3+resp4+val+val+val+1+resp1; v[st] = v[ed] = val+1; } for(int i = 0;i < n;i++){ if(v[i] == val and v[i] != res[i]){ resposta += val+1+val+1+val; v[i]++; } } } cout << (resposta % mod) << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...