Submission #425007

#TimeUsernameProblemLanguageResultExecution timeMemory
425007InternetPerson10Horses (IOI15_horses)C++17
17 / 100
1570 ms14156 KiB
#include "horses.h" #include <bits/stdc++.h> typedef long long ll; using namespace std; const ll MOD = 1000000007; vector<ll> x, y; ll modpow(int n, int e = MOD-2) { if(e == 0) return 1; if(e == 1) return n; ll xx = modpow(n, e/2); xx *= xx; xx %= MOD; if(e%2) { xx *= n; xx %= MOD; } return xx; } ll getBest() { ll horses = 1; ll best = 1; ll g = 1, k = 1; for(int i = 0; i < x.size(); i++) { horses *= x[i]*y[i]; if(i > 0) { horses %= MOD; horses *= modpow(y[i-1]); } horses %= MOD; k *= x[i]; if(k > g) { g = y[i]; k = 1; best = horses; } else if(k*y[i] > g) { g = y[i]; k = 1; best = horses; } } return best%MOD; } int init(int N, int X[], int Y[]) { x.resize(N); y.resize(N); for(int i = 0; i < N; i++) { x[i] = X[i]; y[i] = Y[i]; } return (int)getBest(); } int updateX(int pos, int val) { x[pos] = val; return (int)getBest(); } int updateY(int pos, int val) { y[pos] = val; return (int)getBest(); }

Compilation message (stderr)

horses.cpp: In function 'll getBest()':
horses.cpp:28:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |  for(int i = 0; i < x.size(); i++) {
      |                 ~~^~~~~~~~~~
horses.cpp:32:27: warning: conversion from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' may change value [-Wconversion]
   32 |    horses *= modpow(y[i-1]);
      |                           ^
#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...