Submission #856315

#TimeUsernameProblemLanguageResultExecution timeMemory
856315vipboy0402hcmWall (IOI14_wall)C++17
Compilation error
0 ms0 KiB
#include<iostream> #include<vector> #include<cmath> #include<stdio.h> #include<numeric> #include<cstring> #include<stack> #include<queue> #include<set> #include<deque> #include<map> #include<algorithm> #include<string> #include<cstring> #include<unordered_map> using namespace std; typedef unsigned long long ll; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<int> vi; struct lazy{ ll height; ll type; ll query; }; lazy ar[8000017]; vector<ii> res; ll n,m,u,v,q,k,t; /*void build(int id,int l,int r){ if(l==r){ ar[id]=0x3f3f3f3f; return; } int m=(l+r)/2; build(2*id,l,m); build(2*id+1,m+1,r); ar[id]=min(ar[2*id],ar[2*id+1]); } void apply(ll& a,lazy b,int len){ if(b.a==0&&b.d==0){ return; } else{ a=b.assign*len; a+=b.add*len; } }*/ void apply(lazy& a,lazy b){ if(b.type==0){ return; } else if(b.type==1){ a.height=max(a.height,b.query); a.query=b.query; a.type=b.type; } else{ a.height=min(a.height,b.query); a.query=b.query; a.type=b.type; } } void propagate(int id,int l,int r){ if(l==r){ return; } apply(ar[2*id],ar[id]); apply(ar[2*id+1],ar[id]); } void print(int id,int l,int r,int finalHeight[]){ if(l==r){ finalHeight[l]=ar[id].height; return; } int m=(l+r)/2; print(2*id,l,m); print(2*id+1,m+1,r); } void propagateAll(int id,int l,int r){ propagate(id,l,r); ar[id]={ar[id].height,0,0}; if(l==r){ return; } int m=(l+r)/2; propagateAll(2*id,l,m); propagateAll(2*id+1,m+1,r); } void add(int id,int lx,int rx,int l,int r,ll t,ll a){ propagate(id,lx,rx); ar[id]={ar[id].height,0,0}; if(rx<l||lx>r){ return; } if(lx>=l&&rx<=r){ ar[id].height=t==1 ? max(ar[id].height,a) : min(ar[id].height,a); ar[id].query=a; ar[id].type=t; propagate(id,lx,rx); ar[id]={ar[id].height,0,0}; return; } int m=(lx+rx)/2; add(2*id,lx,m,l,r,t,a); add(2*id+1,m+1,rx,l,r,t,a); } /*segment get(int id,int lx,int rx,int l,int r){ apply(res[id],ar[id],rx-lx+1); propagate(id,lx,rx); ar[id]=0; if(rx<l||lx>r){ return {0,0,0,0}; } else if(lx>=l&&rx<=r){ return res[id]; } int m=(lx+rx)/2; segment a=get(2*id,lx,m,l,r); segment b=get(2*id+1,m+1,rx,l,r); return merge(a,b); } int find(int id,int l,int r,ll k,ll index){ if(ar[id]!=0){ res[id]+=ar[id]; if(r!=l){ ar[2*id]+=ar[id]; ar[2*id+1]+=ar[id]; } ar[id]=0; } if(index>r){ return -1; } if(k>res[id]){ return -1; } if(l==r){ return l; } int m=(l+r)/2; int res=find(2*id,l,m,k,index); if(res==-1){ res=find(2*id+1,m+1,r,k,index); } return res; }*/ void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ for(int i=0;i<k;i++){ add(1,0,n-1,left[i],right[i],op[i],height[i]); } propagateAll(1,0,n-1); print(1,0,n-1,finalHeight); }

Compilation message (stderr)

wall.cpp: In function 'void print(int, int, int, int*)':
wall.cpp:76:19: error: too few arguments to function 'void print(int, int, int, int*)'
   76 |     print(2*id,l,m);
      |                   ^
wall.cpp:70:6: note: declared here
   70 | void print(int id,int l,int r,int finalHeight[]){
      |      ^~~~~
wall.cpp:77:23: error: too few arguments to function 'void print(int, int, int, int*)'
   77 |     print(2*id+1,m+1,r);
      |                       ^
wall.cpp:70:6: note: declared here
   70 | void print(int id,int l,int r,int finalHeight[]){
      |      ^~~~~