Submission #135450

#TimeUsernameProblemLanguageResultExecution timeMemory
135450tinjyu말 (IOI15_horses)C++14
17 / 100
170 ms21468 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 { tree[t]=(build(s,(s+e)/2,t*2)*build((s+e)/2+1,e,t*2+1))%1000000007; //cout<<s<<" "<<e<<" "<<tree[t]<<endl; return tree[t]; } } long long int findtree(int s,int e,int t) { //cout<<s<<" "<<e<<" "<<st<<" "<<en<<" "<<tree[t]<<endl; 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=max(n-32,0),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]; en=ans; //cout<<ans<<endl; 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=max(n-32,0),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; } } int a=y[ans]; en=ans; a=(a*findtree(0,n-1,1))%1000000007; return a; } int updateY(int pos, int val) { y[pos]=val; long long int ans=max(n-32,0),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]; en=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:39:17: warning: conversion to 'double' from 'long long int' may alter its value [-Wconversion]
         if(tmp>=t)
                 ^
horses.cpp:49: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:61:17: warning: conversion to 'double' from 'long long int' may alter its value [-Wconversion]
         if(tmp>=t)
                 ^
horses.cpp:67:13: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
  int a=y[ans];
        ~~~~~^
horses.cpp:69:28: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
     a=(a*findtree(0,n-1,1))%1000000007;
       ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:80:17: warning: conversion to 'double' from 'long long int' may alter its value [-Wconversion]
         if(tmp>=t)
                 ^
horses.cpp:89: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...