#include <bits/stdc++.h>
#define ll long long
#include "game.h"
using namespace std;
vector<vector<vector<ll>>> a;
vector<vector<ll>> b;
int gcd(ll x,ll y) {
if (x > y) {
swap(x, y);
}
if (x == 0) {
return y;
}
if (y % x == 0) {
return x;
}
return gcd(y%x,x);
}
void init(int R, int C) {
a.resize(R);
b.resize(R);
for (int i = 0;i < R;++i) {
a[i].resize(C);
b[i].resize(C);
for (int j = 0;j < C;++j) {
b[i][j] = 0;
a[i][j].resize(20);
for (int k = 0;k < 20;++k) {
a[i][j][k] = 0;
}
}
}
}
void update(int P, int Q, long long K) {
b[P][Q] = K;
a[P][Q][0] = K;
for (int j = 1;j < 20;++j) {
for (int i = 0;i < a[P].size();++i) {
a[P][i][j] = gcd(a[P][i][j-1],a[P][min(i+(1<<(j-1)),int(a[P].size()) - 1)][j - 1]);
}
}
}
long long calculate(int P, int Q, int U, int V) {
ll answ = 0;
for (int i = P;i <= U;++i) {
ll x = log2(V-Q+1);
answ = gcd(answ, gcd(a[i][Q][x],a[i][V-(1<<x)+1][x]));
}
return answ;
}
# | 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... |