답안 #97670

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
97670 2019-02-17T17:33:04 Z tincamatei 게임 (IOI13_game) C++14
10 / 100
13000 ms 129308 KB
#include "game.h"
#include <bits/stdc++.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;
}

int R, C;
long long **aint;

void updateSmall(int anod, int poz, long long val, int l, int r, int nod = 1) {
	if(poz < l || r < poz) return;
	if(l == r)
		aint[anod][nod] = val;
	else if(l < r) {
		int mid = (l + r) / 2;
		updateSmall(anod, poz, val, l, mid, 2 * nod);
		updateSmall(anod, poz, val, mid + 1, r, 2 * nod + 1);
		aint[anod][nod] = gcd2(aint[anod][2 * nod], aint[anod][2 * nod + 1]);
	}
}

void updateBig(int i, int j, long long val, int l, int r, int nod = 1) {
	if(i < l || r < i) return;
	updateSmall(nod, j, val, 0, C - 1);
	if(l < r) {
		int mid = (l + r) / 2;
		updateBig(i, j, val, l, mid, 2 * nod);
		updateBig(i, j, val, mid + 1, r, 2 * nod + 1);
	}
}

long long querySmall(int anod, int i, int j, int l, int r, int nod = 1) {
	if(r < i || j < l) return 0;
	if(i <= l && r <= j)
		return aint[anod][nod];
	else if(l < r) {
		int mid = (l + r) / 2;
		return gcd2(querySmall(anod, i, j, l, mid, 2 * nod),
		            querySmall(anod, i, j, mid + 1, r, 2 * nod + 1));
	}
	return 0;
}

long long queryBig(int p, int q, int u, int v, int l, int r, int nod = 1) {
	if(r < p || u < l) return 0;
	if(p <= l && r <= u)
		return querySmall(nod, q, v, 0, C - 1);
	else if(l < r) {
		int mid = (l + r) / 2;
		return gcd2(queryBig(p, q, u, v, l, mid, 2 * nod),
		            queryBig(p, q, u, v, mid + 1, r, 2 * nod + 1));
	}
	return 0;
}

void init(int _R, int _C) {
	R = _R;
	C = _C;
	aint = new long long*[1+4*_R];
	for(int i = 0; i < 1 + 4 * _R; ++i) {
		aint[i] = new long long[1+4*_C];
		for(int j = 0; j < 1 + 4 * _C; ++j)
			aint[i][j] = 0;
	}
}

void update(int P, int Q, long long K) {
	//updateBig(P, Q, K, 0, R - 1);
	aint[P][Q] = K;
}

long long calculate(int P, int Q, int U, int V) {
	long long rez = 0LL;
	for(int i = P; i <= U; ++i)
		for(int j = Q; j <= V; ++j)
			rez = gcd2(aint[i][j], rez);
	return rez;//queryBig(P, Q, U, V, 0, R - 1);
}

Compilation message

grader.c: In function 'int main()':
grader.c:18:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
  int res;
      ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 4 ms 1664 KB Output is correct
3 Correct 4 ms 1664 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 3 ms 1536 KB Output is correct
6 Correct 4 ms 1664 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 2 ms 640 KB Output is correct
9 Correct 3 ms 1536 KB Output is correct
10 Correct 4 ms 1664 KB Output is correct
11 Correct 6 ms 1664 KB Output is correct
12 Correct 2 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Execution timed out 13047 ms 129156 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 4 ms 1664 KB Output is correct
3 Correct 5 ms 1664 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 3 ms 1536 KB Output is correct
6 Correct 4 ms 1664 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 3 ms 768 KB Output is correct
9 Correct 4 ms 1536 KB Output is correct
10 Correct 4 ms 1536 KB Output is correct
11 Correct 6 ms 1664 KB Output is correct
12 Execution timed out 13064 ms 125948 KB Time limit exceeded
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 256 KB Output is correct
2 Correct 5 ms 1664 KB Output is correct
3 Correct 4 ms 1536 KB Output is correct
4 Correct 2 ms 356 KB Output is correct
5 Correct 3 ms 1536 KB Output is correct
6 Correct 3 ms 1536 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 2 ms 640 KB Output is correct
9 Correct 3 ms 1536 KB Output is correct
10 Correct 3 ms 1536 KB Output is correct
11 Correct 5 ms 1536 KB Output is correct
12 Execution timed out 13064 ms 129144 KB Time limit exceeded
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 4 ms 1664 KB Output is correct
3 Correct 4 ms 1664 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 4 ms 1664 KB Output is correct
6 Correct 3 ms 1536 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 3 ms 768 KB Output is correct
9 Correct 4 ms 1664 KB Output is correct
10 Correct 4 ms 1536 KB Output is correct
11 Correct 6 ms 1664 KB Output is correct
12 Execution timed out 13082 ms 129308 KB Time limit exceeded
13 Halted 0 ms 0 KB -