제출 #137355

#제출 시각아이디문제언어결과실행 시간메모리
137355TuGSGeReL게임 (IOI13_game)C++17
63 / 100
9794 ms256004 KiB
#include "game.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #define ll long long #define mp make_pair #define pub push_back #define pob pop_back() #define ss second #define ff first #define mt make_tuple #define pof pop_front() #define fbo find_by_order #define ook order_of_key #define lb lower_bound #define ub upper_bound typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; using pll = pair <ll, ll>; using pii = pair <int, int>; int rr, cc; unordered_map <int, unordered_map<int, ll> > sgx; 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; } int which(int node, int l, int r, int idx) { if ( l == r ) { return node; } int mid = (l + r) >> 1; if ( mid >= idx ) which(node << 1, l, mid, idx); else which((node << 1) + 1, mid + 1, r, idx); } void init(int R, int C) { rr = R; cc = C; } void updy(int node, int l, int r, int idx, ll d, int whi) { if ( l == r && r == idx ) { sgx[whi][node] = d; do{ whi >>= 1; sgx[whi][node] = gcd2(sgx[whi << 1][node], sgx[(whi << 1) + 1][node]); }while(whi > 1); return; } int mid = (l + r) >> 1; if ( idx <= mid ) updy(node << 1, l, mid, idx, d, whi); else updy((node << 1) + 1, mid + 1, r, idx, d, whi); sgx[whi][node] = gcd2(sgx[whi][node << 1], sgx[whi][(node << 1) + 1]); do{ whi >>= 1; sgx[whi][node] = gcd2(sgx[whi << 1][node], sgx[(whi << 1) + 1][node]); }while(whi > 1); } ll lqu(int node, int l, int r, int L, int R, int whi) { if ( l > R || r < L ) return 0; if ( l >= L && r <= R ) return sgx[whi][node]; int mid = (l + r) >> 1; return gcd2(lqu(node << 1, l, mid, L, R, whi), lqu((node << 1) + 1, mid + 1, r, L, R, whi)); } ll query (int node, int l, int r, int lx, int ly, int rx, int ry) { if ( l > rx || r < lx ) return 0; if ( l >= lx && r <= rx ) return lqu(1, 1, cc, ly, ry, node); int mid = (l + r) >> 1; return gcd2(query(node << 1, l, mid, lx, ly, rx, ry), query((node << 1) + 1, mid + 1, r, lx, ly, rx, ry)); } void update(int P, int Q, ll K) { updy(1, 1, cc, Q + 1, K, which(1, 1, rr, P + 1)); } ll calculate(int P, int Q, int U, int V) { return query(1, 1, rr, P + 1, Q + 1, U + 1, V + 1); }

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

grader.c: In function 'int main()':
grader.c:18:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
  int res;
      ^~~
game.cpp: In function 'int which(int, int, int, int)':
game.cpp:52:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#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...