# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1004803 | magikarp23 | Horses (IOI15_horses) | C++17 | 1560 ms | 8028 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;
const long long MOD = 1000000007; // 10^9 + 7
int X_store[MAX_N];
int Y_store[MAX_N];
int N_store;
long long modMul(long long a, long long b) {
long long result = 0;
a %= MOD;
while (b > 0) {
if (b % 2 == 1) {
result = (result + a) % MOD;
}
a = (a * 2) % MOD;
b /= 2;
}
return result;
}
long long calc_max_profit() {
long long max_profit = 0;
long long cumulative_growth = 1;
for (int i = 0; i < N_store; i++) {
cumulative_growth = modMul(cumulative_growth, X_store[i]);
long long current_profit = modMul(cumulative_growth, Y_store[i]);
if (current_profit > max_profit) {
max_profit = current_profit;
}
}
return max_profit;
}
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... |