Submission #138221

#TimeUsernameProblemLanguageResultExecution timeMemory
138221SortingHorses (IOI15_horses)C++14
34 / 100
1565 ms8224 KiB
#include <bits/stdc++.h>

using namespace std;

const long long mod = 1e9 + 7;
const int N = 5e5 + 7;
const long long T = 1e9;

int n, *x, *y;
int first;
bool ok = false;

long long init(int _n, int _x[], int _y[]){
	if(!ok){
		n = _n;
		x = _x;
		y = _y;
		ok = true;
	}

	long long curr = 1, ans = 0;

	for(int i = n - 1; i >= 0; i--){
		curr *= (long long) x[i];

		first = i;
		if(curr > T){
			break;
		}
	}

	curr = 1;

	for(int i = first; i < n; i++){
		ans = max(ans, (long long)curr * (long long)y[i]);
		if(i != n - 1){
			curr *= (long long)x[i + 1];
		}
	}
	ans %= mod;

	for(int i = 0; i <= first; i++){
		ans *= (long long)x[i];
		ans %= mod;
	}

	return ans;
}

long long updateX(int pos, int val){
	x[pos] = val;

	return init(n, x, y);
}

long long updateY(int pos, int val){
	y[pos] = val;

	return init(n, x, y);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...