답안 #376033

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
376033 2021-03-10T17:59:08 Z wind_reaper 게임 (IOI13_game) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#include "game.h"
using namespace std;

struct SegmentTree{
	struct Node{
		int64_t val;
		Node *lc, *rc;

		Node() : val(0), lc(0), rc(0) {}
	};
	
	vector<Node> tree;

	Node* new_node(){
		tree.emplace_back();
		return &tree.back();
	}
	Node *root;
	int L, R;
	void init(int _L, int _R){
		this->L = _L;
		this->R = _R;
		root = new_node();
	}

	void update(int idx, int64_t val, Node* &node, int l, int r){
		if(r - l == 1){
			if(!node) node = new_node();
			node->val = val;
			return;
		}

		int mid = (l + r) >> 1;

		if(idx < mid) update(idx, val, node->lc, l, mid);
		else update(idx, val, node->rc, mid, r);

		node->val = __gcd((node->lc ? node->lc->val : 0), (node->rc ? node->rc->val : 0));
	}

	int64_t query(int l, int r, Node* &node, int lx, int rx){
		if(r <= lx || l >= rx || !node)
			return 0;
		if(l >= lx && r <= rx)
			return node->val;

		int mid = (lx + rx) >> 1;

		return __gcd(query(l, r, node->lc, lx, mid), query(l, r, node->rc, mid, rx));
	}

	void update(int idx, int64_t val){
		update(idx, val, root, L, R);
	}

	int64_t query(int l, int r){
		return query(l, r, root, L, R);
	}
};

vector<SegmentTree> T;

void update(int P, int Q, int64_t K){
	T[P].update(Q, K);
}

int64_t calculate(int P, int Q, int U, int V){
	int64_t res = 0;
	for(int i = P; i < U; i++){
		res = __gcd(res, T[i].query(Q, V+1));
	}
	return res;
}

void init(int R, int C){
	T.resize(R);
	for(int i = 0; i < R; i++){
		T[i].init(0, C);
	}
}

Compilation message

game.cpp:68:9: error: ambiguating new declaration of 'int64_t calculate(int, int, int, int)'
   68 | int64_t calculate(int P, int Q, int U, int V){
      |         ^~~~~~~~~
In file included from game.cpp:2:
game.h:10:11: note: old declaration 'long long int calculate(int, int, int, int)'
   10 | long long calculate(int P, int Q, int U, int V);
      |           ^~~~~~~~~