답안 #97678

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
97678 2019-02-17T17:40:12 Z tincamatei 게임 (IOI13_game) C++14
37 / 100
13000 ms 137348 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] = 0LL;
	}
}

void update(int P, int Q, long long K) {
	//updateBig(P, Q, K, 0, R - 1);
	updateSmall(P, Q, K, 0, C - 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);
	long long rez = 0LL;
	for(int i = P; i <= U; ++i)
		rez = gcd2(rez, querySmall(i, Q, V, 0, C - 1));
	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 256 KB Output is correct
2 Correct 4 ms 1536 KB Output is correct
3 Correct 3 ms 1536 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 5 ms 1580 KB Output is correct
6 Correct 3 ms 1636 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 3 ms 640 KB Output is correct
9 Correct 3 ms 1664 KB Output is correct
10 Correct 4 ms 1536 KB Output is correct
11 Correct 3 ms 1536 KB Output is correct
12 Correct 3 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 3 ms 256 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 1705 ms 137348 KB Output is correct
5 Correct 897 ms 137336 KB Output is correct
6 Correct 1413 ms 134696 KB Output is correct
7 Correct 1461 ms 134424 KB Output is correct
8 Correct 1095 ms 134832 KB Output is correct
9 Correct 1397 ms 134520 KB Output is correct
10 Correct 1365 ms 134188 KB Output is correct
11 Correct 3 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 3 ms 1536 KB Output is correct
3 Correct 3 ms 1536 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 3 ms 1792 KB Output is correct
6 Correct 3 ms 1536 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 1664 KB Output is correct
11 Correct 3 ms 1664 KB Output is correct
12 Execution timed out 13027 ms 127216 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 1664 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
8 Correct 2 ms 768 KB Output is correct
9 Correct 3 ms 1536 KB Output is correct
10 Correct 3 ms 1536 KB Output is correct
11 Correct 3 ms 1536 KB Output is correct
12 Correct 1564 ms 137336 KB Output is correct
13 Correct 1010 ms 137180 KB Output is correct
14 Correct 1337 ms 134712 KB Output is correct
15 Correct 1445 ms 134440 KB Output is correct
16 Correct 1190 ms 134812 KB Output is correct
17 Correct 1481 ms 134556 KB Output is correct
18 Correct 1253 ms 134168 KB Output is correct
19 Execution timed out 13095 ms 127232 KB Time limit exceeded
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 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 256 KB Output is correct
5 Correct 3 ms 1536 KB Output is correct
6 Correct 4 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 3 ms 1664 KB Output is correct
10 Correct 4 ms 1664 KB Output is correct
11 Correct 4 ms 1664 KB Output is correct
12 Correct 1623 ms 137268 KB Output is correct
13 Correct 963 ms 137080 KB Output is correct
14 Correct 1341 ms 134768 KB Output is correct
15 Correct 1343 ms 134392 KB Output is correct
16 Correct 1264 ms 134776 KB Output is correct
17 Correct 1473 ms 134620 KB Output is correct
18 Correct 1293 ms 134080 KB Output is correct
19 Execution timed out 13102 ms 127360 KB Time limit exceeded
20 Halted 0 ms 0 KB -