Submission #99096

#TimeUsernameProblemLanguageResultExecution timeMemory
99096figter001Game (IOI13_game)C++14
37 / 100
13059 ms157644 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; const int N = 1e5+50; const ll oo = 1e18; const ll mod = 1e9+7; ll seg2[11][4*N]; int c,type,ro,up,dw; struct node{ ll sub[4100]; node(){ memset(sub,0,sizeof(sub)); } }seg[4100]; 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; } ll l,r,val,cur,in; void update2(int n,int s,int e){ if(s > cur || e < cur)return; if(s == e){ seg[in].sub[n] = val; return; } update2(n*2,s,(s+e)/2); update2(n*2+1,(s+e)/2+1,e); seg[in].sub[n] = gcd2(seg[in].sub[n*2],seg[in].sub[n*2+1]); } void merge(int n,int s,int e){ if(s == e){ seg[in].sub[n] = gcd2(seg[in*2].sub[n],seg[in*2+1].sub[n]); return; } merge(n*2,s,(s+e)/2); merge(n*2+1,(s+e)/2+1,e); seg[in].sub[n] = gcd2(seg[in].sub[n*2],seg[in].sub[n*2+1]); } void update1(int n,int s,int e){ if(s > r || e < l)return; if(s == e){ if(type){ in = n; update2(1,1,ro); }else seg2[cur][n] = val; return; } update1(n*2,s,(s+e)/2); update1(n*2+1,(s+e)/2+1,e); if(type){ in = n; merge(1,1,ro); }else seg2[cur][n] = gcd2(seg2[cur][n*2],seg2[cur][n*2+1]); } int l1,r1; ll get1(int n,int s,int e){ if(s > r1 || e < l1)return 0; if(s >= l1 && e <= r1)return seg[in].sub[n]; return gcd2(get1(n*2,s,(s+e)/2),get1(n*2+1,(s+e)/2+1,e)); } ll get(int n,int s,int e){ if(s > r || e < l)return 0; if(s >= l && e <= r){ if(type){ in = n; l1 = up; r1 = dw; //cout << in << ' ' << up << ' ' << dw << endl; return get1(1,1,ro); } else return seg2[cur][n]; } return gcd2(get(n*2,s,(s+e)/2),get(n*2+1,(s+e)/2+1,e)); } void init(int R, int C) { type = R>10; c=C; ro=R; } void update(int P, int Q, long long K) { Q++; P++; l = r = Q; val = K; cur = P; update1(1,1,c); } long long calculate(int P, int Q, int U, int V) { l = Q+1; r = V+1; ll ans = 0; up = P+1; dw = U+1; if(type)ans = get(1,1,c); else{ for(int i=P+1;i<=U+1;i++){ cur = i; ans = gcd2(ans,get(1,1,c)); } } return ans; }

Compilation message (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...