이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "game.h"
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
int n, m;
struct node {
node *left, *right;
ll val;
};
void modifj(node* i, int l, int r, int pos, ll val) {
if(!i) {
i = new node();
i-> val = 0;
}
if(l > pos || r < pos) return;
if(l == pos && r == pos) {
i->val = val;
return;
}
int mid = (l + r) >> 1;
modifj(i->left, l, mid, pos, val);
modifj(i->right, mid + 1, r, pos, val);
i->val = __gcd(i->left->val, i->right->val);
}
ll queryj(node* i, int l, int r, int tl, int tr) {
if(!i || l > tr || r < tl) return 0;
if(l >= tl && r <= tr) return i->val;
int mid = (l + r) >> 1;
return __gcd(queryj(i->left, l, mid, tl, tr), queryj(i->right, mid + 1, r, tl, tr));
}
struct purice {
purice *left, *right;
node* paiu;
ll val;
};
void modifi(purice* i, int l, int r, int posi, int posj, ll val) {
if(!i) {
i = new purice();
i->val = 0;
}
if(l > posi || r < posi) return;
if(l == posi && r == posi) {
modifj(i->paiu, 0, m - 1, posj, val);
return;
}
int mid = (l + r) >> 1;
modifi(i->left, l, mid, posi, posj, val);
modifi(i->right, mid + 1, r, posi, posj, val);
ll new_val = __gcd(queryj(i->left->paiu, 0, m - 1, posj, posj), queryj(i->right->paiu, 0, m - 1, posj, posj));
modifj(i->paiu, 0, m - 1, posj, new_val);
}
ll queryi(purice* i, int l, int r, int tli, int tri, int tlj, int trj) {
if(!i || l > tri || r < tli) return 0;
if(l >= tli && r <= tri) return queryj(i->paiu, 0, m - 1, tlj, trj);
int mid = (l + r) >> 1;
return __gcd(queryi(i->left, l, mid, tli, tri, tlj, trj), queryi(i->right, mid + 1, r, tli, tri, tlj, trj));
}
long long gcd2(long long X, long long Y) {
long long tmp;
while (X != Y && Y != 0) {
tmp = X;
X = Y;
Y = tmp % Y;
}
return X;
}
void init(int R, int C) {
n = R, m = C;
}
purice *amogus;
void update(int P, int Q, long long K) {
modifi(amogus, 0, n - 1, P, Q, K);
}
long long calculate(int P, int Q, int U, int V) {
return queryi(amogus, 0, n - 1, P, U, Q, V);
}
# | 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... |