| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1315500 | kawhiet | 꿈 (IOI13_dreaming) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "game.h"
using namespace std;
long long gcd(long long x, long long y) {
if (x > y) {
swap(x, y);
}
if (x == 0) {
return y;
}
if (y % x == 0) {
return x;
}
return gcd(y % x,x);
}
int n, m;
set<array<long long, 3>> pos;
void init(int R, int C) {
n = R;
m = C;
}
void update(int i, int j, long long k) {
for (auto &[x, y, s] : pos) {
if (x == i && y == j) {
pos.erase({x, y, s});
pos.insert({x, y, k});
return;
}
}
pos.insert({i, j, k});
}
long long calculate(int p, int q, int u, int v) {
long long ans = 0;
for (auto [i, j, x] : pos) {
if (p <= i && i <= u && q <= j && j <= v) {
ans = gcd(ans, x);
}
if (i > u) break;
}
return ans;
}
