Submission #620717

#TimeUsernameProblemLanguageResultExecution timeMemory
620717HazemHorses (IOI15_horses)C++14
17 / 100
98 ms25548 KiB
#include <bits/stdc++.h> #define LL long long using namespace std; const int M = 5e5+10; const int MOD = 1e9+7; LL add(LL a,LL b){ return (a+b)%MOD; } LL mult(LL a,LL b){ return (a*b)%MOD; } LL fastpow(LL n,LL k){ LL ret = 1; while(k){ if(k&1)ret = mult(ret,n); k /= 2; n = mult(n,n); } return ret; } LL divide(LL a,LL b){ return (a*fastpow(b,MOD-2)); } LL a[M],b[M],n; LL pr = 1; LL calc(){ LL idx = max(1ll,n-29),cur = 1; for(int i=idx+1;i<=n;i++){ cur *= a[i]; if(cur*b[i]>b[idx]) idx = i,cur = 1; } cur = 1; for(int i=max(1ll,n-29);i<=idx;i++) cur = mult(cur,a[i]); return mult(mult(cur,pr),b[idx]); } int init(int N, int X[], int Y[]) { n = N; a[0] = 1; for(int i=1;i<=n;i++){ a[i] = X[i-1]; b[i] = Y[i-1]; if(i<n-29) pr = mult(pr,a[i]); } return calc(); } int updateX(int pos, int val) { if(pos+1<n-29){ pr = divide(pr,a[pos+1]); pr = mult(pr,val); } a[pos+1] = val; return calc(); } int updateY(int pos, int val) { b[pos+1] = val; return calc(); }

Compilation message (stderr)

horses.cpp: In function 'long long int calc()':
horses.cpp:40:15: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   40 |  for(int i=idx+1;i<=n;i++){
      |            ~~~^~
horses.cpp:47:15: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   47 |  for(int i=max(1ll,n-29);i<=idx;i++)
      |            ~~~^~~~~~~~~~
horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:64:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   64 |  return calc();
      |         ~~~~^~
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:75:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   75 |  return calc();
      |         ~~~~^~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:82:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   82 |  return calc();
      |         ~~~~^~
#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...