Submission #1140835

#TimeUsernameProblemLanguageResultExecution timeMemory
1140835LuvidiDischarging (NOI20_discharging)C++17
38 / 100
80 ms15944 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll, ll> #define pii pair<int, int> #define fs first #define sc second #define pb push_back double ins(pll p1,pll p2){ double x=p1.sc-p2.sc,y=p2.fs-p1.fs; return x/y; } void solve() { int n; cin>>n; ll a[n+1]; for(int i=1;i<=n;i++)cin>>a[i]; vector<pll> ch; ll dp[n+1]; dp[0]=0; int idx=0; for(int i=1;i<=n;i++){ pll p={n-i+1,dp[i-1]}; while(ch.size()>1&&ins(ch[ch.size()-2],ch.back())>ins(ch.back(),p))ch.pop_back(); ch.push_back(p); idx=min(idx,(int)ch.size()-1); while(idx+1<ch.size()&&ins(ch[idx],ch[idx+1])<a[i])idx++; dp[i]=ch[idx].fs*a[i]+ch[idx].sc; } cout<<dp[n]<<'\n'; } int main() { #ifdef FPO freopen("in","r",stdin); freopen("out","w",stdout); #endif ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#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...