답안 #171111

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
171111 2019-12-27T12:39:55 Z dennisstar 게임 (IOI13_game) C++11
0 / 100
4 ms 508 KB
#include "game.h"
#include <bits/stdc++.h>
#define fi first
#define se second
#define ryan bear
#define all(V) ((V).begin()), ((V).end())
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef long double ld;
typedef vector<int> vim;
typedef vector<ll> vlm;

int R, C;

struct dt1 {
	dt1 *l, *r;
	ll dt;
	dt1() {l=r=NULL; dt=0;}
	ll upd(int y, ll val, int fr, int re) {
		if (!(fr<=y&&y<=re)) return dt;
		if (fr==re) {dt=val; return dt;}
		int md=(fr+re)/2;
		if (l==NULL) l=new dt1();
		if (r==NULL) r=new dt1();
		return dt=__gcd(l->upd(y, val, fr, md), r->upd(y, val, md+1, re));
	}
	ll get(int y1, int y2, int fr, int re) {
		if (fr>re||y2<fr||re<y1) return 0;
		if (y1<=fr&&re<=y2) return dt;
		int md=(fr+re)/2;
		return __gcd((l?l->get(y1, y2, fr, md):0), (r?r->get(y1, y2, md+1, re):0));
	}
};

struct dt2 {
	dt2 *l, *r;
	dt1 *seg;
	dt2() {l=r=NULL; seg=new dt1();}
	void upd(int x, int y, ll val, int fr, int re) {
		if (!(fr<=x&&x<=re)) return ;
		seg->upd(y, val, 0, C-1);
		if (fr==re) return ;
		if (l==NULL) l=new dt2();
		if (r==NULL) r=new dt2();
		int md=(fr+re)/2;
		l->upd(x, y, val, fr, md);
		r->upd(x, y, val, md+1, re);
	}
	ll get(int x1, int x2, int y1, int y2, int fr, int re) {
		if (fr>re||x2<fr||re<x1) return 0;
		if (x1<=fr&&re<=x2) return seg->get(y1, y2, 0, C-1);
		int md=(fr+re)/2;
		return __gcd((l?(l->get(x1, x2, y1, y2, fr, md)):0), (r?(r->get(x1, x2, y1, y2, md+1, re)):0));
	}
};

dt2 *root=new dt2();

void init(int r_, int c_) {
	R=r_, C=c_;
}

void update(int P, int Q, ll K) {
	root->upd(P, Q, K, 0, R-1);
}

ll calculate(int P, int Q, int U, int V) {
	int x1, x2, y1, y2;
	x1=min(P, U); x2=max(P, U);
	y1=min(Q, V); y2=max(Q, V);
    return root->get(x1, x2, y1, y2, 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 3 ms 504 KB Output is correct
2 Incorrect 3 ms 504 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 504 KB Output is correct
2 Incorrect 2 ms 376 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 504 KB Output is correct
2 Incorrect 3 ms 504 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 504 KB Output is correct
2 Incorrect 3 ms 504 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Incorrect 4 ms 508 KB Output isn't correct
3 Halted 0 ms 0 KB -