Submission #1011259

#TimeUsernameProblemLanguageResultExecution timeMemory
1011259MardonbekhazratovHorses (IOI15_horses)C++17
17 / 100
1545 ms16248 KiB
#include "horses.h" #include<algorithm> #include<vector> const int INF=1e9; const int MOD=1e9+7; using namespace std; int n; vector<int>x,y; int get(){ vector<long long>pref(n+1),suff(n+2); pref[0]=suff[n+1]=1; for(int i=0;i<n;i++){ pref[i+1]=pref[i]*x[i]%MOD; suff[n-i]=min(suff[n-i+1]*x[n-i-1],1LL*MOD); } int id=-1; long long ans=0,cur=1; for(int i=0;i<n;i++){ if(suff[i+1]!=MOD){ cur*=x[i]; ans=max(ans,cur*y[i]); if(id==-1) id=i; } } return ans%MOD*pref[id]%MOD; } int init(int N, int X[], int Y[]) { n=N; x.resize(n); y.resize(n); for(int i=0;i<n;i++) x[i]=X[i],y[i]=Y[i]; return get(); } int updateX(int pos, int val) { x[pos]=val; return get(); } int updateY(int pos, int val) { y[pos]=val; return get(); }

Compilation message (stderr)

horses.cpp: In function 'int get()':
horses.cpp:28:29: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   28 |      return ans%MOD*pref[id]%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...