Submission #935019

#TimeUsernameProblemLanguageResultExecution timeMemory
935019PagodePaiva말 (IOI15_horses)C++17
17 / 100
25 ms14684 KiB
#include <bits/stdc++.h> #include "horses.h" #define N 500010 using namespace std; int n; long long v[N][2]; long long dp[N]; const long long int mod = 1e9+7; long long p = 1; long long binpow(long long a, long long b, long long m){ a %= m; if(b == 0) return 1; long long t = binpow(a, b/2, m); if(b % 2 == 0) return (t*t) % m; else return ((((t*t) % m)*a) % m); } int solve(){ if(n >= 100){ return (p*v[n][1]) % mod; } else{ long long aux = 1; for(int i = 1;i <= n;i++){ aux *= v[i][0]; if(aux > (int) 1e9){ return (p*v[n][1]) % mod; } } } dp[0] = 0; long long res = 0; for(int i = 1;i <= n;i++){ dp[i] = 0; long long int prod = 1; for(int j = i;j > 0;j--){ prod *= v[j][0]; dp[i] = max(dp[i], dp[j-1] + ((prod-1)*v[i][1])); res = max(res, dp[j-1] + prod*v[i][1]); } // cout << dp[i] << ' '; } return res % mod; } int init(int NN, int X[], int Y[]) { n = NN; for(int i = 1;i <= n;i++){ v[i][0] = X[i-1]; p *= v[i][0]; p %= mod; v[i][1] = Y[i-1]; } return solve(); } int updateX(int pos, int val) { p *= binpow(v[pos+1][0], mod-2, mod); p %= mod; v[pos+1][0] = val; p *= val; p %= mod; return solve(); } int updateY(int pos, int val) { v[pos+1][1] = val; return solve(); }

Compilation message (stderr)

horses.cpp: In function 'int solve()':
horses.cpp:23:22: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   23 |   return (p*v[n][1]) % mod;
      |          ~~~~~~~~~~~~^~~~~
horses.cpp:30:24: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   30 |     return (p*v[n][1]) % mod;
      |            ~~~~~~~~~~~~^~~~~
horses.cpp:46:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   46 |  return res % 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...