Submission #135827

#TimeUsernameProblemLanguageResultExecution timeMemory
135827amiratouHorses (IOI15_horses)C++14
17 / 100
1572 ms8312 KiB
#pragma GCC optimize("O3") #include "horses.h" #include <bits/stdc++.h> #define ll long long using namespace std; const int MOD = (int)(1e9)+7; int x[500005],y[500005],n; ll dp[15][1005]; ll solve(ll idx,ll nb_horses){ if(idx==n)return 0; if(dp[idx][nb_horses]!=-1) return dp[idx][nb_horses]; ll nb=(nb_horses*x[idx])%MOD; ll ans=(nb*y[idx])%MOD; for (ll i = nb-1LL; i >=0LL ; i--) ans=max(ans,((solve(idx+1,nb-i)%MOD)+((i*(y[idx]%MOD))%MOD))%MOD); return dp[idx][nb_horses]=(ans%MOD); } int init(int N, int X[], int Y[]) { n=N; for (int i = 0; i < N; ++i) x[i]=X[i],y[i]=Y[i]; memset(dp,-1,sizeof dp); return (int)solve(0,1); } int updateX(int pos, int val) { memset(dp,-1,sizeof dp); x[pos]=val; return (int)solve(0,1); } int updateY(int pos, int val) { memset(dp,-1,sizeof dp); y[pos]=val; return (int)solve(0,1); }
#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...