Submission #1195173

#TimeUsernameProblemLanguageResultExecution timeMemory
1195173byunjaewooGame (IOI13_game)C++20
0 / 100
1 ms328 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; using ll=long long; ll gcd__(ll a, ll b) { return b?gcd__(b, a%b):a; } const int S=1<<30; class seg2d { public: seg2d() { root=new seg1d(); } void update(int x, int y, ll v) { update(root, 0, S-1, x, y, v); } ll query(int s, int e, int l, int r) { return query(root, 0, S-1, s, e, l, r); } private: class seg1d { public: seg1d *l, *r; seg1d() { root=new Node(); } void update(int k, ll v) { update(root, 0, S-1, k, v); } int query(int l, int r) { return query(root, 0, S-1, l, r); } private: struct Node { Node *l, *r; ll val; }; Node *root; void update(Node *curr, int s, int e, int k, ll v) { if(s==e) { curr->val=v; return; } int m=(s+e)/2; if(k<=m) { if(!curr->l) curr->l=new Node(); update(curr->l, s, m, k, v); if(curr->r) curr->val=gcd__(curr->l->val, curr->r->val); else curr->val=curr->l->val; } else { if(!curr->r) curr->r=new Node(); update(curr->r, m+1, e, k, v); if(curr->l) curr->val=gcd__(curr->l->val, curr->r->val); else curr->val=curr->r->val; } } ll query(Node *curr, int s, int e, int l, int r) { if(!curr || s>r || l>e) return 0; if(l<=s && e<=r) return curr->val; int m=(s+e)/2; return gcd__(query(curr->l, s, m, l, r), query(curr->r, m+1, e, l, r)); } }; seg1d *root; void update(seg1d *curr, int s, int e, int x, int y, ll v) { curr->update(y, v); if(s==e) return; int m=(s+e)/2; if(x<=m) { if(!curr->l) curr->l=new seg1d(); update(curr->l, s, m, x, y, v); } else { if(!curr->r) curr->r=new seg1d(); update(curr->r, m+1, e, x, y, v); } } ll query(seg1d *curr, int s, int e, int l, int r, int ll, int rr) { if(!curr || s>r || l>e) return 0; if(l<=s && e<=r) { return curr->query(ll, rr); } int m=(s+e)/2; return gcd__(query(curr->l, s, m, l, r, ll, rr), query(curr->r, m+1, e, l, r, ll, rr)); } }T; void init(int R, int C) {} void update(int P, int Q, ll K) { T.update(P, Q, K); } ll calculate(int P, int Q, int U, int V) { return T.query(P, U, Q, V); }
#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...