Submission #1281473

#TimeUsernameProblemLanguageResultExecution timeMemory
1281473nathlol2말 (IOI15_horses)C++20
34 / 100
1595 ms19928 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; long double mx = -1; for(int i = 0;i<n;i++){ if(pf[i] + log(y[i]) > mx){ mx = pf[i] + log(y[i]); id = i; } } ll 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; long double mx = -1; for(int i = 0;i<n;i++){ if(pf[i] + log(y[i]) > mx){ mx = pf[i] + log(y[i]); id = i; } } ll 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; long double mx = -1; for(int i = 0;i<n;i++){ if(pf[i] + log(y[i]) > mx){ mx = pf[i] + log(y[i]); id = i; } } ll 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...