# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1004800 | magikarp23 | Horses (IOI15_horses) | C++17 | 1560 ms | 12124 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "horses.h"
using namespace std;
const int MAX_N = 500000 + 1;
long long MOD = 1000000000 + 7;
int X_store[MAX_N];
int Y_store[MAX_N];
int N_store;
// int calc_max_profit() {
// int max_profit = 0;
// int num_horses = 1;
// for (int i=0; i<N_store; i++) {
// num_horses *= X_store[i];
// max_profit = max(max_profit, num_horses * Y_store[i]);
// }
// return max_profit % MOD;
// }
long long calc_max_profit() {
vector<long long> dp(N_store + 1, 0);
long long horses = 1;
for (int i = 0; i < N_store; i++) {
horses = (horses * X_store[i]) % MOD;
long long sell_profit = (horses * Y_store[i]) % MOD;
dp[i + 1] = max((dp[i] + sell_profit) % MOD, (horses * dp[i]) % MOD);
}
return dp[N_store];
}
int init(int N, int X[], int Y[]) {
N_store = N;
for (int i=0; i<N; i++) {
X_store[i] = X[i];
Y_store[i] = Y[i];
}
return calc_max_profit();
}
int updateX(int pos, int val) {
X_store[pos] = val;
return calc_max_profit();
}
int updateY(int pos, int val) {
Y_store[pos] = val;
return calc_max_profit();
}
Compilation message (stderr)
# | 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... |