Submission #1157179

#TimeUsernameProblemLanguageResultExecution timeMemory
1157179alexander707070Seesaw (JOI22_seesaw)C++20
34 / 100
271 ms872 KiB
#include<bits/stdc++.h> #define MAXN 107 using namespace std; int n,a[MAXN]; long double pref[MAXN]; vector<long double> w; long double dp[MAXN][MAXN],curr,ans; int li[MAXN][MAXN],tim; long double av(int l,int r){ return (pref[r]-pref[l-1])/(r-l+1); } const int inf=1e9; long double ff(int l,int r){ if(l==r)return a[l]; if(li[l][r]==tim)return dp[l][r]; li[l][r]=tim; dp[l][r]=inf; if(av(l,r-1)>=curr)dp[l][r]=min(dp[l][r],max(av(l,r),ff(l,r-1))); if(av(l+1,r)>=curr)dp[l][r]=min(dp[l][r],max(av(l,r),ff(l+1,r))); return dp[l][r]; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)pref[i]=pref[i-1]+a[i]; for(int i=1;i<=n;i++){ for(int f=i;f<=n;f++){ w.push_back(av(i,f)); } } sort(w.begin(),w.end()); ans=inf; for(int i=0;i<w.size();i++){ tim++; curr=w[i]; if(av(1,n)<w[i])break; ans=min(ans,ff(1,n)-w[i]); } cout<<setprecision(10)<<fixed<<ans<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...