Submission #1129510

#TimeUsernameProblemLanguageResultExecution timeMemory
1129510boris_7Horses (IOI15_horses)C++20
34 / 100
1596 ms9144 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; 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{ 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; } } 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 = 0;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 = 0;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...