Submission #1016316

#TimeUsernameProblemLanguageResultExecution timeMemory
1016316ayankarimovaHorses (IOI15_horses)C++14
100 / 100
126 ms67156 KiB
#include "horses.h" #include <bits/stdc++.h> using namespace std; #define endl '\n' #define ll long long const ll mod=1e9+7; const ll sz=5e5+5; struct d { double sum, lpre; ll mul, pre; }; d st[sz*4]; ll x[sz], y[sz], n; double xl[sz], yl[sz]; d make(ll pos) { d cur; cur.sum=xl[pos]; cur.mul=x[pos]; cur.lpre=xl[pos]+yl[pos]; cur.pre=((x[pos]%mod)*(y[pos]%mod))%mod; return cur; } void mrg(d a, d b, d &c) { c.sum=a.sum+b.sum; c.mul=((a.mul%mod)*(b.mul%mod))%mod; if(a.lpre>a.sum+b.lpre){ c.lpre=a.lpre; c.pre=a.pre; } else{ c.lpre=a.sum+b.lpre; c.pre=((a.mul%mod)*(b.pre%mod)%mod); } } void build(ll l, ll r, ll in) { if(l==r){ st[in]=make(l); return; } ll mid=(l+r)/2; build(l, mid, in*2); build(mid+1, r, in*2+1); mrg(st[in*2], st[in*2+1], st[in]); } void update(ll l, ll r, ll in, ll pos) { if(l==r){ st[in]=make(l); return; } ll mid=(l+r)/2; if(pos<=mid){ update(l, mid, in*2, pos); } else{ update(mid+1, r, in*2+1, pos); } mrg(st[in*2], st[in*2+1], st[in]); } int init(int N, int X[], int Y[]) { ll num=1, ans=0; n=N; for(int i=0; i<n; i++){ x[i+1]=(X[i]); y[i+1]=(Y[i]); xl[i+1]=log10(X[i]); yl[i+1]=log10(Y[i]); } build(1, n, 1); return st[1].pre; } int updateX(int pos, int val) { pos++; x[pos]=val; xl[pos]=log10(val); update(1, n, 1, pos); return st[1].pre; } int updateY(int pos, int val) { pos++; y[pos]=val; yl[pos]=log10(val); update(1, n, 1, pos); return st[1].pre; }

Compilation message (stderr)

horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:75:15: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   75 |  return st[1].pre;
      |         ~~~~~~^~~
horses.cpp:66:8: warning: unused variable 'num' [-Wunused-variable]
   66 |     ll num=1, ans=0;
      |        ^~~
horses.cpp:66:15: warning: unused variable 'ans' [-Wunused-variable]
   66 |     ll num=1, ans=0;
      |               ^~~
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:83:15: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   83 |  return st[1].pre;
      |         ~~~~~~^~~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:91:15: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   91 |  return st[1].pre;
      |         ~~~~~~^~~
#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...