Submission #785235

# Submission time Handle Problem Language Result Execution time Memory
785235 2023-07-17T07:28:19 Z NothingXD Sorting (IOI15_sorting) C++17
Compilation error
0 ms 0 KB
#include "horses.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef complex<ld> point;

void debug_out(){cerr << endl;}

template<typename Head, typename... Tail>
void debug_out(Head H, Tail... T){
	cout << H << " ";
	debug_out(T...);
}

#define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define MP(x, y) make_pair(x, y)

const int maxn = 5e5 + 10;
const int mod = 1e9 + 7;

int n;
ll x[maxn], y[maxn];
ll dp[maxn << 2][2];
bool of[maxn << 2];

int find(int v, int l, int r, int tmp){
	if (!of[v] && 1ll * tmp * dp[v][1] < mod) return -1;
	if (l + 1 == r) return l;
	int mid = (l + r) >> 1;
	int lc = v << 1;
	int rc = lc | 1;
	int res = find(rc, mid, r, tmp);
	if (res == -1){
		tmp *= dp[rc][1];
		res = find(lc, l, mid, tmp);
	}
	return res;
}

void build2(int v, int l, int r){
	if (l + 1 == r){
		dp[v][0] = x[l] * y[l];
		dp[v][1] = x[l];
		return;
	}
	int mid = (l + r) >> 1;
	int lc = v << 1;
	int rc = lc | 1;
	build2(lc, l, mid);
	build2(rc, mid, r);
	dp[v][0] = max(dp[lc][0], dp[lc][1] * dp[rc][0]);
	dp[v][1] = dp[lc][1] * dp[rc][1];
	if (dp[v][1] >= mod || of[lc] || of[rc]) of[v] = true;
	dp[v][1] %= mod;
}

void change2(int v, int l, int r, int idx){
	if (l + 1 == r){
		dp[v][0] = x[l] * y[l];
		dp[v][1] = x[l];
		return;
	}
	int mid = (l + r) >> 1;
	int lc = v << 1;
	int rc = lc | 1;
	if (idx < mid) change2(lc, l, mid, idx);
	else change2(rc, mid, r, idx);
	dp[v][0] = max(dp[lc][0], dp[lc][1] * dp[rc][0]);
	dp[v][1] = dp[lc][1] * dp[rc][1];
	if (dp[v][1] >= mod || of[lc] || of[rc]) of[v] = true;
	dp[v][1] %= mod;
}

pll get2(int v, int l, int r, int ql, int qr){
	if (qr <= l || r <= ql) return {1, 1};
	if (ql <= l && r <= qr) return MP(dp[v][0], dp[v][1]);
	int mid = (l + r) >> 1;
	int lc = v << 1;
	int rc = lc | 1;
	pll a = get2(lc, l, mid, ql, qr);
	pll b = get2(rc, mid, r, ql, qr);
	return MP(max(a.F, a.S * b.F), a.S * b.S % mod);
}

int Calc(){
	int idx = find(1, 0, n, 1);
	if (idx == -1) idx = 0;
	int tmp = get2(1, 0, n, 0, idx+1).S;
	ll tmp2 = max(y[idx], get2(1, 0, n, idx+1, n).F) % mod;
	return 1ll * tmp * tmp2 % mod;
}

int init(int N, int X[], int Y[]) {
	n = N;
	for (int i = 0; i < n; i++){
		x[i] = X[i];
		y[i] = Y[i];
	}
	build2(1, 0, n);
	return Calc();
}

int updateX(int pos, int val) {
	x[pos] = val;
	change2(1, 0, n, pos);
	return Calc();
}

int updateY(int pos, int val) {
	y[pos] = val;
	change2(1, 0, n, pos);
	return Calc();
}

Compilation message

sorting.cpp:1:10: fatal error: horses.h: No such file or directory
    1 | #include "horses.h"
      |          ^~~~~~~~~~
compilation terminated.