Submission #1197821

#TimeUsernameProblemLanguageResultExecution timeMemory
1197821orzdraiduwu말 (IOI15_horses)C++20
17 / 100
1596 ms8256 KiB
#include <bits/stdc++.h> #include "horses.h" using namespace std; #define pb push_back // #define log log2 // #define int long long using ll = long long; // const int INF = 1e12; const int INF = 1e17; const int MOD = 1e9 + 7; vector<int> x, y; int _init() { int n = x.size(); if(n == 1) return (x[0]*y[0])%MOD; int a = 0; // long double u = 0; ll u = 0; for(int i = n-1 ; i >= 0 ; i--) { if(u < y[i]) { u = x[i] * y[i]; a = i; } else u *= x[i]; if(u > INF) break; } ll res = 1; for(int i = 0 ; i <= a ; i++) { // sob // res = max() res *= x[i]; res %= MOD; } return (int)(res%MOD * y[a]%MOD)%MOD; } int init(int N, int X[], int Y[]) { // int id = 0; x.resize(N); y.resize(N); for(int i = 0 ; i < N ; i++) x[i] = X[i]; for(int i = 0 ; i < N ; i++) y[i] = Y[i]; return _init(); } int updateX(int pos, int val) { x[pos] = val; return _init(); } int updateY(int pos, int val) { y[pos] = val; return _init(); }

Compilation message (stderr)

horses.cpp:10:17: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+17' to '2147483647' [-Woverflow]
   10 | const int INF = 1e17;
      |                 ^~~~
#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...