제출 #159790

#제출 시각아이디문제언어결과실행 시간메모리
159790rama_pang게임 (IOI13_game)C++14
0 / 100
4 ms892 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; using lint = long long; int R, C; inline lint gcd(lint X, lint Y) { lint tmp; while (X != Y && Y != 0) { tmp = X; X = Y; Y = tmp % Y; } return X; } struct SegmentTreeInside { struct Node { lint val; Node *lc, *rc; Node(): val(0), lc(NULL), rc(NULL) {} }; Node *root; SegmentTreeInside(): root(NULL) {} void update(Node *n, int tl, int tr, int p, lint x) { if (tl == tr) { n->val = x; return; } if (n->lc == NULL) n->lc = new Node(); if (n->rc == NULL) n->rc = new Node(); int mid = (tl + tr) / 2; if (p <= mid) update(n->lc, tl, mid, p, x); else update(n->rc, mid + 1, tr, p, x); n->val = gcd(n->lc->val, n->rc->val); } lint query(Node *n, int tl, int tr, int le, int ri) { if (tr < le || tl > ri || tl > tr) return 0; if (le <= tl && tr <= ri) return n->val; int mid = (tl + tr) / 2; return gcd(query(n->lc, tl, mid, le, ri), query(n->rc, mid + 1, tr, le, ri)); } }; struct SegmentTree { struct Node { SegmentTreeInside seg; Node *lc, *rc; Node() { lc = rc = NULL; seg.root = new SegmentTreeInside::Node(); } }; Node *root; SegmentTree(): root(NULL) {} void update(Node *n, int tl, int tr, int p, int q, lint x) { if (tl == tr) { n->seg.update(n->seg.root, 0, C - 1, q, x); return; } int mid = (tl + tr) / 2; if (n->lc == NULL) n->lc = new Node(); if (n->rc == NULL) n->rc = new Node(); if (p <= mid) update(n->lc, tl, mid, p, q, x); else update(n->rc, mid + 1, tr, p, q, x); n->seg.update(n->seg.root, 0, C - 1, q, x); } lint query(Node *n, int tl, int tr, int le, int ri, int lo, int hi) { if (tr < le || tl > ri || tl > tr) return 0; if (le <= tl && tr <= ri) return n->seg.query(n->seg.root, 0, C - 1, lo, hi); int mid = (tl + tr) / 2; return gcd(query(n->lc, tl, mid, le, ri, lo, hi), query(n->rc, mid + 1, tr, le, ri, lo, hi)); } }; SegmentTree solver; void init(int R, int C) { ::R = R, ::C = C; solver.root = new SegmentTree::Node(); } void update(int P, int Q, lint K) { solver.update(solver.root, 0, R - 1, P, Q, K); } lint calculate(int P, int Q, int U, int V) { return solver.query(solver.root, 0, R - 1, P, U, Q, V); }

컴파일 시 표준 에러 (stderr) 메시지

grader.c: In function 'int main()':
grader.c:18:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
  int res;
      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...