Submission #69007

#TimeUsernameProblemLanguageResultExecution timeMemory
69007theknife2001Horses (IOI15_horses)C++17
Compilation error
0 ms0 KiB
#include "horses.h" //#include "grader.cpp" #include <bits/stdc++.h> #define mid (l+r)/2 using namespace std; const int N=5e5+55; long long tree[N*4][2]; long long x[N]; long long y[N]; set < int > st; int m=1e9+7; int n; void build(int l , int r , int node) { if(l==r) { tree[node][0]=x[l]; tree[node][1]=y[l]; return ; } build(l,mid,node*2); build(mid+1,r,node*2+1); if(!q) { tree[node][q]=tree[node*2][q]*tree[node*2+1][q]; tree[node][q]%=m; } else tree[node]=max(tree[node*2],tree[node*2+1]); } void update(int l , int r , int node , int ind , int val , int q) { if(l==r&&l==ind) { tree[node][q]=val; return ; } if(ind<=mid) update(l,mid,node*2,ind,val,q); else update(mid+1,r,node*2+1,ind,val,q); if(!q) { tree[node][q]=tree[node*2][q]*tree[node*2+1][q]; tree[node][q]%=m; } else tree[node]=max(tree[node*2],tree[node*2+1]); } long long query(int l , int r , int node , int x , int y , int q) { if(x<=l&&r<=y) return tree[node][q]; if(l>y||r<x) return 1; return (query(l,mid,node*2,x,y,q)*query(mid+1,r,node*2+1,x,y,q))%m; } int solve() { int i=n-1; long long ret=0; long long temp=1; long long s=1; bool q=0; int last=1e9; for(auto ii:st) { i=-ii; s*=x[i]; if(s>10000000000) { i=last; break; } last=i; } int bestpos=n-1; for(upper_bound(st.begin(),st.end(),i)!=st.end()) { i=-(*upper_bound(st.begin(),st.end(),i)); temp*=x[i]; if(query(0,n-1,1,i,n-1,1)*temp>=ret) { ret=y[i]*temp; bestpos=i; } if(ret<0||y[i]*temp<0) { assert(0); } } return (query(0,n-1,1,bestpos,n-1,1)*query(0,n-1,1,0,bestpos,0))%m; } int init(int N, int X[], int Y[]) { n=N; st.insert(0); for(int i=0;i<N;i++) { x[i]=X[i]; if(x[i]!=1) st.insert(-i); y[i]=Y[i]; } build(0,n-1,1); return solve(); } int updateX(int pos, int val) { if(x[pos]==1) st.insert(-pos); x[pos]=val; if(val==1&&pos) st.erase(-pos); update(0,n-1,1,pos,val,0); return solve(); } int updateY(int pos, int val) { y[pos]=val; update(0,n-1,1,pos,val,1); return solve(); }

Compilation message (stderr)

horses.cpp: In function 'void build(int, int, int)':
horses.cpp:25:9: error: 'q' was not declared in this scope
     if(!q)
         ^
horses.cpp:31:51: error: invalid array assignment
         tree[node]=max(tree[node*2],tree[node*2+1]);
                                                   ^
horses.cpp: In function 'void update(int, int, int, int, int, int)':
horses.cpp:51:51: error: invalid array assignment
         tree[node]=max(tree[node*2],tree[node*2+1]);
                                                   ^
horses.cpp: In function 'long long int query(int, int, int, int, int, int)':
horses.cpp:54:65: warning: declaration of 'y' shadows a global declaration [-Wshadow]
 long long query(int l , int r , int node , int x , int y , int q)
                                                                 ^
horses.cpp:10:11: note: shadowed declaration is here
 long long y[N];
           ^
horses.cpp:54:65: warning: declaration of 'x' shadows a global declaration [-Wshadow]
 long long query(int l , int r , int node , int x , int y , int q)
                                                                 ^
horses.cpp:9:11: note: shadowed declaration is here
 long long x[N];
           ^
horses.cpp: In function 'int solve()':
horses.cpp:83:53: error: expected ';' before ')' token
     for(upper_bound(st.begin(),st.end(),i)!=st.end())
                                                     ^
horses.cpp:97:5: error: expected primary-expression before 'return'
     return (query(0,n-1,1,bestpos,n-1,1)*query(0,n-1,1,0,bestpos,0))%m;
     ^~~~~~
horses.cpp:97:5: error: expected ';' before 'return'
horses.cpp:97:5: error: expected primary-expression before 'return'
horses.cpp:97:5: error: expected ')' before 'return'
horses.cpp:97:69: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
     return (query(0,n-1,1,bestpos,n-1,1)*query(0,n-1,1,0,bestpos,0))%m;
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
horses.cpp:66:15: warning: unused variable 'ret' [-Wunused-variable]
     long long ret=0;
               ^~~
horses.cpp:67:12: warning: unused variable 'temp' [-Wunused-variable]
  long long temp=1;
            ^~~~
horses.cpp:69:10: warning: unused variable 'q' [-Wunused-variable]
     bool q=0;
          ^
horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:100:33: warning: declaration of 'N' shadows a global declaration [-Wshadow]
 int init(int N, int X[], int Y[])
                                 ^
horses.cpp:7:11: note: shadowed declaration is here
 const int N=5e5+55;
           ^