제출 #135828

#제출 시각아이디문제언어결과실행 시간메모리
135828amiratouHorses (IOI15_horses)C++14
17 / 100
1577 ms86520 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[1001][10001];
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...