This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |