#include <bits/stdc++.h>
using namespace std;
long long fast_expo(long long x, long long y, long long mod) {
long long ans = 1;
long long mult = x;
while (y > 0) {
if (y % 2) {
ans = (ans*mult) % mod;
}
mult = (mult*mult) % mod;
y = y >> 1;
}
return ans;
}
long long inv_mod(long long x, long long mod) {
return fast_expo(x, mod-1, mod);
}
int n;
vector<long long> x, y;
long long product = 1;
long long mod = 1e9+7;
long long init(int N, int X[], int Y[]) {
n = N;
for (int i = 0; i < n; i++) {
x.push_back(X[i]);
product = (product * x[i]) % mod;
}
for (int i = 0; i < n; i++) {
y.push_back(Y[i]);
}
long long picked_y = y[n-1];
long long divisor = 1;
long long curr_y = y[n-1];
long long curr_div = 1;
for (int i = n-2; i > 0; i--) {
curr_div *= x[i+1];
curr_y = y[i];
if ((curr_y * divisor) > (picked_y * curr_div)) {
picked_y = curr_y;
divisor = curr_div;
}
if (curr_div >= 1e9) {
break;
}
}
long long ans = ((product * picked_y) % mod * inv_mod(divisor, mod)) % mod;
return ans;
}
long long updateX(int pos, int val) {
product = ((product * (long long)val % mod) * inv_mod(x[pos], mod))% mod;
x[pos] = val;
long long picked_y = y[n-1];
long long divisor = 1;
long long curr_y = y[n-1];
long long curr_div = 1;
for (int i = n-2; i > 0; i--) {
curr_div *= x[i+1];
curr_y = y[i];
if ((curr_y * divisor) > (picked_y * curr_div)) {
picked_y = curr_y;
divisor = curr_div;
}
if (curr_div >= 1e9) {
break;
}
}
long long ans = ((product * picked_y) % mod * inv_mod(divisor, mod)) % mod;
return ans;
}
long long updateY(int pos, int val) {
y[pos] = val;
long long picked_y = y[n-1];
long long divisor = 1;
long long curr_y = y[n-1];
long long curr_div = 1;
for (int i = n-2; i > 0; i--) {
curr_div *= x[i+1];
curr_y = y[i];
if ((curr_y * divisor) > (picked_y * curr_div)) {
picked_y = curr_y;
divisor = curr_div;
}
if (curr_div >= 1e9) {
break;
}
}
long long ans = ((product * picked_y) % mod * inv_mod(divisor, mod)) % mod;
return ans;
}
# | 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... |