제출 #1281472

#제출 시각아이디문제언어결과실행 시간메모리
1281472nathlol2말 (IOI15_horses)C++20
0 / 100
1593 ms19812 KiB
#include "horses.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 5e5 + 5;
const ll MOD = 1e9 + 7;
vector<ll> x(N), y(N);
vector<long double> pf(N);
int n;
int init(int NN, int X[], int Y[]) {
	n = NN;
	for(int i = 0;i<n;i++) x[i] = X[i], y[i] = Y[i];
	pf[0] = log(x[0]);
	for(int i = 1;i<n;i++){
		pf[i] = pf[i - 1] + log(x[i]);
	}
	int id = -1, mx = -1;
	for(int i = 0;i<n;i++){
		if(pf[i] + log(y[i]) > mx){
			mx = pf[i] + log(y[i]);
			id = i;
		}
	}
	int ans = 1;
	for(int i = 0;i<=id;i++){
		ans *= x[i];
		ans %= MOD;
	}
	ans *= y[id];
	return ans % MOD;
}

int updateX(int pos, int val) {
	x[pos] = val;
	pf[0] = log(x[0]);
	for(int i = 1;i<n;i++){
		pf[i] = pf[i - 1] + log(x[i]);
	}
	int id = -1, mx = -1;
	for(int i = 0;i<n;i++){
		if(pf[i] + log(y[i]) > mx){
			mx = pf[i] + log(y[i]);
			id = i;
		}
	}
	int ans = 1;
	for(int i = 0;i<=id;i++){
		ans *= x[i];
		ans %= MOD;
	}
	ans *= y[id];
	return ans % MOD;
}

int updateY(int pos, int val) {
	y[pos] = val;
	pf[0] = log(x[0]);
	for(int i = 1;i<n;i++){
		pf[i] = pf[i - 1] + log(x[i]);
	}
	int id = -1, mx = -1;
	for(int i = 0;i<n;i++){
		if(pf[i] + log(y[i]) > mx){
			mx = pf[i] + log(y[i]);
			id = i;
		}
	}
	int ans = 1;
	for(int i = 0;i<=id;i++){
		ans *= x[i];
		ans %= MOD;
	}
	ans *= y[id];
	return ans % 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...