Submission #1330667

#TimeUsernameProblemLanguageResultExecution timeMemory
1330667tkm_algorithmsHorses (IOI15_horses)C++20
34 / 100
1596 ms8388 KiB
#include "horses.h"
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
//#define int ll
using P = pair<int, int>;
#define all(x) x.begin(), x.end()
#define rep(i, l, n) for (int i = l; i < (n); ++i)
#define sz(x) (int)x.size()
const char nl = '\n';
const ll mod = 1e9+7;
//const ll inf = 1e9+1;

int n;
vector<int> x, y;
int init(int N, int X[], int Y[]) {
	n = N;
	rep(i, 0, n)
		x.push_back(X[i]),
		y.push_back(Y[i]);
		
		
	ll res = 0, yp = Y[0], pr = 1;
	rep(i, 1, n) {
		pr = min(mod, pr*x[i]);
		if (pr*y[i] > yp) {
			res = i, yp = y[i];
			pr = 1;
		}
	}
	
	ll ans = 1;
	rep(i, 0, res+1)
		ans = ans*x[i]%mod;
	return ans*y[res]%mod;
}

int updateX(int pos, int val) {	
	x[pos] = val;
	ll res = 0, yp = y[0], pr = 1;
	rep(i, 1, n) {
		pr = min(mod, pr*x[i]);
		if (pr*y[i] > yp) {
			res = i, yp = y[i];
			pr = 1;
		}
	}
	
	ll ans = 1;
	rep(i, 0, res+1)
		ans = ans*x[i]%mod;
	return ans*y[res]%mod;
}

int updateY(int pos, int val) {
	y[pos] = val;
	ll res = 0, yp = y[0], pr = 1;
	rep(i, 1, n) {
		pr = min(mod, pr*x[i]);
		if (pr*y[i] > yp) {
			res = i, yp = y[i];
			pr = 1;
		}
	}
	
	ll ans = 1;
	rep(i, 0, res+1)
		ans = ans*x[i]%mod;
	return ans*y[res]%mod;
}
#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...