Submission #235370

#TimeUsernameProblemLanguageResultExecution timeMemory
235370crossing0verGame (IOI13_game)C++17
37 / 100
13067 ms22600 KiB
#include<bits/stdc++.h>
#define ll long long
#include "game.h"
using namespace std;
 
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 t[100][4*100001] , R, C;
ll t1[2000][4*2001];
void upd (int s,int v,int tl,int tr,int pos,ll val) {
	if (tl == tr) {
		t[s][v] = val;
		return;
	}
	int tm = (tl + tr)/2;
	if (pos <= tm) upd(s,v*2,tl,tm,pos,val);
	else upd(s,v*2|1,tm+1,tr,pos,val);
	t[s][v] = gcd2(t[s][v*2],t[s][v*2|1]);
}
void upd1 (int s,int v,int tl,int tr,int pos,ll val) {
	if (tl == tr) {
		t1[s][v] = val;
		return;
	}
	int tm = (tl + tr)/2;
	if (pos <= tm) upd1(s,v*2,tl,tm,pos,val);
	else upd1(s,v*2|1,tm+1,tr,pos,val);
	t1[s][v] = gcd2(t1[s][v*2],t1[s][v*2|1]);
}
ll get (int s,int v,int tl,int tr,int l,int r) {
	if (l > tr || r < tl) return 0;
	if (l <= tl && r >= tr) {
		return t[s][v];
	}
	int tm = (tl + tr)/2;
	return gcd2 ( get (s,v*2,tl,tm,l,r), get (s,v*2|1,tm+1,tr,l,r));
}
ll get1 (int s,int v,int tl,int tr,int l,int r) {
	if (l > tr || r < tl) return 0;
	if (l <= tl && r >= tr) {
		return t1[s][v];
	}
	int tm = (tl + tr)/2;
	return gcd2 ( get1 (s,v*2,tl,tm,l,r), get1 (s,v*2|1,tm+1,tr,l,r));
}
void update(int P, int Q, long long K) {
	if (C > 2000 || R > 2000)
	upd (P,1,0,100000,Q,K);
	else  upd1 (P,1,0,2000,Q,K);
}
 
long long calculate(int P, int Q, int U, int V) {
    /* ... */
    ll s = 0;
    for (int i = P; i <= U; i++) {
    	if (C > 2000 || R > 2000)
    	s = gcd2(s,get (i,1,0,100000,Q,V));
		else s = s = gcd2(s,get1 (i,1,0,2000,Q,V));	
	}
	return s;
}
 
void init(int R1, int C1) {R = R1; C = C1;}

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;
      ^~~
game.cpp: In function 'long long int calculate(int, int, int, int)':
game.cpp:65:10: warning: operation on 's' may be undefined [-Wsequence-point]
   else s = s = gcd2(s,get1 (i,1,0,2000,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...