Submission #1138031

#TimeUsernameProblemLanguageResultExecution timeMemory
1138031Ekber_EkberHorses (IOI15_horses)C++20
Compilation error
0 ms0 KiB
#include "horses.h"
#include <bits/stdc++.h>
#define int long long
#define itn int
#define endl "\n"
#define ff first
#define ss second
#define pb push_back
#define ppb pop_back
#define ins insert
#define lb lower_bound
#define ub upper_bound
#define bs binary_search
#define count1 __builtin_popcount
#define all(v) v.begin(), v.end()
using namespace std;

struct point{
	int ans, sum;
};

constexpr int MAX = 5e+5 + 3, INF = 2e+9, MOD = 1e+9 + 7, K = log2(MAX);
vector <int> a, b;
vector <point> t(4 * MAX);

void build(int v, int tl, int tr) {
	if (tl == tr) {
		t[v].ans = (a[tl] * b[tl]) % MOD;
		t[v].sum = a[tl];
		return;
	}
	int tm = (tl + tr) / 2;
	build(v*2, tl, tm);
	build(v*2+1, tm+1, tr);
	t[v].sum = (t[v*2].sum * t[v*2+1].sum) % MOD;
	t[v].ans = max(t[v*2].ans, (t[v*2].sum * t[v*2+1].ans) % MOD);
}

point find(int v, int tl, int tr, int l, int r) {
	if (l > r) return {INF, INF};
	if (tl == l && tr == r) return t[v];
	int tm = (tl + tr) / 2;
	point res1 = find(v*2, tl, tm, l, min(r, tm));
	point res2 = find(v*2+1, tm+1, tr, max(l, tm+1), r);
	point res;
	res.sum = (res1.sum * res2.sum) % MOD;
	res.ans = max(res1.ans, (res1.sum * res2.ans) % MOD);
	return res;
}

void updatex(int v, int tl, int tr, int i, int x) {
	if (tl == tr) {
		t[v].ans = (x * b[tl]) % MOD;
		t[v].sum = x;
		a[tl] = x;
		return;
	}
	int tm = (tl + tr) / 2;
	if (i <= tm) {
		updatex(v*2, tl, tm, i, x);
	}
	else {
		updatex(v*2+1, tm+1, tr, i, x);
	}
	t[v].sum = (t[v*2].sum * t[v*2+1].sum) % MOD;
	t[v].ans = max(t[v*2].ans, (t[v*2].sum * t[v*2+1].ans) % MOD);
}

void updatey(int v, int tl, int tr, int i, int y) {
	if (tl == tr) {
		t[v].ans = (a[tl] * y) % MOD;
		b[tl] = y;
		return;
	}
	int tm = (tl + tr) / 2;
	if (i <= tm) {
		updatey(v*2, tl, tm, i, y);
	}
	else {
		updatey(v*2+1, tm+1, tr, i, y);
	}
	t[v].sum = (t[v*2].sum * t[v*2+1].sum) % MOD;
	t[v].ans = max(t[v*2].ans, (t[v*2].sum * t[v*2+1].ans) % MOD);
}

int init(int N, int X[], int Y[]) {
	for (int i=0; i < N; i++) {
		a.pb(X[i]);
		b.pb(Y[i]);
	}
	build(1, 0, N-1);
	return 0;
}

int updateX(int pos, int val) {
	return 0;
}

int updateY(int pos, int val) {
	return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccuPg74p.o: in function `main':
grader.c:(.text.startup+0xb1): undefined reference to `init(int, int*, int*)'
/usr/bin/ld: grader.c:(.text.startup+0x10b): undefined reference to `updateX(int, int)'
/usr/bin/ld: grader.c:(.text.startup+0x165): undefined reference to `updateY(int, int)'
collect2: error: ld returned 1 exit status