Submission #91991

#TimeUsernameProblemLanguageResultExecution timeMemory
91991luciocf말 (IOI15_horses)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "horses.h"

using namespace std;

const int maxn = 5e5+10;

const int mod = 1e9+7;

typedef long long ll;

ll x[maxn], y[maxn];

struct node
{
	double maior, soma;
	ll maiorp, prod;
} tree[4*maxn];

void join(int node)
{
	tree[node].maior = max(tree[2*node].maior, tree[2*node].soma+tree[2*node+1].maior);
	tree[node].soma = tree[2*node].soma+tree[2*node+1].soma;

	if (tree[2*node].maior > tree[2*node].soma+tree[2*node+1].maior)
		tree[node].maiorp = tree[2*node].maiorp;
	else 
		tree[node].maiorp = (tree[2*node].prod*tree[2*node+1].maiorp)%mod;

	tree[node].prod = (tree[2*node].prod*tree[2*node+1].prod)%mod;
}

void build(int node, int l, int r)
{
	if (l == r)
	{
		tree[node].maior = log2(x[l])+log2(y[l]);
		tree[node].soma = log2(x[l]);

		tree[node].maiorp = (x[l]*y[l])%mod;
		tree[node].prod = x[l]%mod;

		return;
	}

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

	build(2*node, l, mid); build(2*node+1, mid+1, r);
	join(node);
}

void upd(int node, int l, int r, int pos)
{
	if (l == r)
	{
		tree[node].maior = log2(x[l])+log2(y[l]);
		tree[node].soma = log2(x[l]);

		tree[node].maiorp = (x[l]*y[l])%mod;
		tree[node].prod = x[l]%mod;	

		return;
	}

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

	if (pos <= mid) upd(2*node, l, mid, pos);
	else upd(2*node+1, mid+1, r, pos);

	join(node);
}

int init(int N, int X[], int Y[])
{
	n = N;
	for (int i = 0; i < n; i++)
		x[i+1] = (ll)X[i], Y[i+1] = (ll)Y[i];
	build(1, 1, n);

	return (int)tree[1].maiorp;
}

int updateX(int pos, int val)
{
	x[pos+1] = (ll)val;
	upd(1, 1, n, pos+1);

	return (int)tree[1].maiorp;
}

int updateY(int pos, int val)
{
	y[pos+1] = (ll)val;
	upd(1, 1, n, pos+1);

	return (int)tree[1].maiorp;
}

Compilation message (stderr)

horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:75:2: error: 'n' was not declared in this scope
  n = N;
  ^
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:86:12: error: 'n' was not declared in this scope
  upd(1, 1, n, pos+1);
            ^
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:94:12: error: 'n' was not declared in this scope
  upd(1, 1, n, pos+1);
            ^