Submission #421061

#TimeUsernameProblemLanguageResultExecution timeMemory
421061LouayFarahHorses (IOI15_horses)C++14
17 / 100
1573 ms47204 KiB
#include "bits/stdc++.h" #include "horses.h" using namespace std; const int MOD = 1e9+7; int n; vector<int> x, y; //vector<vector<int>> dp(1001, vector<int>(10001, -1)); int solve(int h, int i, int curr) { if(i==n) { return curr; } if(h==0) return curr; int t = h*x[i]; int maxi = curr; int j = 0; maxi = max(maxi, solve(t - j, i+1, (curr%MOD + ((j%MOD)*(y[i])%MOD)%MOD))%MOD); j = t; maxi = max(maxi, solve(t - j, i+1, (curr%MOD + ((j%MOD)*(y[i])%MOD)%MOD))%MOD); j = t-1; maxi = max(maxi, solve(t - j, i+1, (curr%MOD + ((j%MOD)*(y[i])%MOD)%MOD))%MOD); j = 1; maxi = max(maxi, solve(t - j, i+1, (curr%MOD + ((j%MOD)*(y[i])%MOD)%MOD))%MOD); return maxi; } int init(int N, int X[], int Y[]) { n = N; x.assign(n, 0); y.assign(n, 0); for(int i = 0; i<n; i++) { x[i] = X[i]; y[i] = Y[i]; } int res = solve(1, 0, 0); return res; } int updateX(int pos, int val) { x[pos] = val; int res = solve(1, 0, 0); return res; } int updateY(int pos, int val) { y[pos] = val; int res = solve(1, 0, 0); return res; }
#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...