Submission #135431

#TimeUsernameProblemLanguageResultExecution timeMemory
135431tinjyuHorses (IOI15_horses)C++14
0 / 100
95 ms22284 KiB
#include "horses.h" #include <iostream> using namespace std; long long int x[1000005],y[1000005],tree[2000005],st,en; int n; long long int build(int s,int e,int t) { if(s==e)return tree[t]=x[s]; else return tree[t]=(build(s,(s+e)/2,t*2)*build((s+e)/2+1,e,t*2+1))%1000000007; } long long int findtree(int s,int e,int t) { if(e<st || en<s)return 1; else if(st<=s && e<=en)return tree[t]; else return (findtree(s,(s+e)/2,t*2)*findtree((s+e)/2+1,e,t*2+1))%1000000007; } long long int changetree(int s,int e,int t) { if(s==e)return en; if(st<s || e<st)return 1; else return tree[t]=(changetree(s,(s+e)/2,t*2)*changetree((s+e)/2+1,e,t*2+1))%1000000007; } int init(int N, int X[], int Y[]) { n=N; for(int i=0;i<n;i++)x[i]=X[i]; for(int i=0;i<n;i++)y[i]=Y[i]; build(0,n-1,1); long long int ans=n-32,tmp=1; for(int i=max(n-32,0);i<n;i++) { double t=(double)y[ans]/double(y[i]); if(tmp<1000000000)tmp*=x[i]; if(tmp>=t) { ans=i; tmp=1; } } long long int a=y[ans]; a=(a*findtree(0,n-1,1))%1000000007; return a; } int updateX(int pos, int val) { x[pos]=val; st=pos,en=val; changetree(0,n-1,1); long long int ans=n-32,tmp=1; for(int i=max(n-32,0);i<n;i++) { double t=(double)y[ans]/double(y[i]); if(tmp<1000000000)tmp*=x[i]; if(tmp>=t) { ans=i; tmp=1; } } long long int a=y[ans]; a=(a*findtree(0,n-1,1))%1000000007; return a; } int updateY(int pos, int val) { y[pos]=val; long long int ans=n-32,tmp=1; for(int i=max(n-32,0);i<n;i++) { double t=(double)y[ans]/double(y[i]); if(tmp<1000000000)tmp*=x[i]; if(tmp>=t) { ans=i; tmp=1; } } long long int a=y[ans]; a=(a*findtree(0,n-1,1))%1000000007; return a; }

Compilation message (stderr)

horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:33:17: warning: conversion to 'double' from 'long long int' may alter its value [-Wconversion]
         if(tmp>=t)
                 ^
horses.cpp:41:9: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
  return a;
         ^
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:53:17: warning: conversion to 'double' from 'long long int' may alter its value [-Wconversion]
         if(tmp>=t)
                 ^
horses.cpp:61:9: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
  return a;
         ^
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:71:17: warning: conversion to 'double' from 'long long int' may alter its value [-Wconversion]
         if(tmp>=t)
                 ^
horses.cpp:79:9: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
  return a;
         ^
#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...