Submission #719407

#TimeUsernameProblemLanguageResultExecution timeMemory
719407thimote75Horses (IOI15_horses)C++14
17 / 100
1554 ms22032 KiB
#include "horses.h" #include <bits/stdc++.h> using namespace std; #define ld long double const ld MOD = 1e9 + 7; ld exp_table[25]; void init_exp_table () { exp_table[0] = exp(1.0); for (int j = 1; j < 25; j ++) { exp_table[j] = exp_table[j - 1] * exp_table[j - 1]; exp_table[j] = fmod(exp_table[j], MOD); } } ld mod_exp (int n) { ld res = 1; for (int k = 0; k < 25; k ++) { if (((1 << k) & n) != 0) { res *= exp_table[k]; res = fmod(res, MOD); } } return res; } int mod_exp (ld doub) { int n = (int) floor(doub); ld f0 = mod_exp(n); ld om = doub - n; return round(fmod(f0 * exp(om), MOD)); } vector<ld> lX; vector<ld> lY; int compute () { ld max_v = 0; ld sum_v = 0; for (int j = 0; j < lX.size(); j ++) { sum_v += lX[j]; max_v = max(max_v, sum_v + lY[j]); } return mod_exp(max_v); } int init(int N, int X[], int Y[]) { init_exp_table(); lX.resize(N); lY.resize(N); for (int i = 0; i < N; i ++) { lX[i] = log((ld) X[i]); lY[i] = log((ld) Y[i]); } return compute(); } int updateX(int pos, int val) { lX[pos] = log((ld) val); return compute(); } int updateY(int pos, int val) { lY[pos] = log((ld) val); return compute(); }

Compilation message (stderr)

horses.cpp: In function 'int mod_exp(long double)':
horses.cpp:39:14: warning: conversion from 'long double' to 'int' may change value [-Wfloat-conversion]
   39 |  return round(fmod(f0 * exp(om), MOD));
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
horses.cpp: In function 'int compute()':
horses.cpp:49:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long double>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |  for (int j = 0; j < lX.size(); j ++) {
      |                  ~~^~~~~~~~~~~
#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...