제출 #1129515

#제출 시각아이디문제언어결과실행 시간메모리
1129515boris_7말 (IOI15_horses)C++20
34 / 100
55 ms9272 KiB
#include "horses.h"
#include<bits/stdc++.h>
int mod = 1e9+7;
using namespace std;
using ll = long long;

vector<int>x,y;
int n,loc=1;

int init(int N, int X[], int Y[]) {
	n = N;
	for(int i = 0;i<N;i++) x.push_back(X[i]);
	for(int i = 0;i<N;i++) y.push_back(Y[i]);
	if(n<=1000){
		ll ans = 1,cnt=1,ind = 0;
		for(int i = 0;i<n;i++){
			cnt*=X[i];
			if(cnt*Y[i]>=Y[ind]) ind = i,cnt=1;
		}
		for(int i = 0;i<=ind;i++) ans=(ans*X[i])%mod;
		ans*=Y[ind];
		return ans%mod;
	}
	else{
		for(int i = 0;i<=n-41;i++) loc=(loc*x[i])%mod;
		ll ans = 1,cnt=1,ind = n-41;
		for(int i = n-40;i<n;i++){
			cnt*=x[i];
			if(cnt*y[i]>=y[ind]) ind = i,cnt=1;
		}
		for(int i = n-40;i<=ind;i++) ans=(ans*x[i])%mod;
		ans*=y[ind];
		return ans%mod;
	}
}

int updateX(int pos, int val) {
	x[pos]=val;
	if(n<=1000){
		ll ans = 1,cnt=1,ind = 0;
		for(int i = 0;i<n;i++){
			cnt*=x[i];
			if(cnt*y[i]>=y[ind]) ind = i,cnt=1;
		}
		for(int i = 0;i<=ind;i++) ans=(ans*x[i])%mod;
		ans*=y[ind];
		return ans%mod;
	}
	else{
		ll ans = 1,cnt=1,ind = n-41;
		for(int i = n-40;i<n;i++){
			cnt*=x[i];
			if(cnt*y[i]>=y[ind]) ind = i,cnt=1;
		}
		for(int i = n-40;i<=ind;i++) ans=(ans*x[i])%mod;
		ans*=y[ind];
		return ans%mod;
	}
}

int updateY(int pos, int val) {
	y[pos]=val;
	if(n<=1000){
		ll ans = 1,cnt=1,ind = 0;
		for(int i = 0;i<n;i++){
			cnt*=x[i];
			if(cnt*y[i]>=y[ind]) ind = i,cnt=1;
		}
		for(int i = 0;i<=ind;i++) ans=(ans*x[i])%mod;
		ans*=y[ind];
		return ans%mod;
	}
	else{
		ll ans = 1,cnt=1,ind = n-41;
		for(int i = n-40;i<n;i++){
			cnt*=x[i];
			if(cnt*y[i]>=y[ind]) ind = i,cnt=1;
		}
		for(int i = n-40;i<=ind;i++) ans=(ans*x[i])%mod;
		ans*=y[ind];
		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...