Submission #373759

#TimeUsernameProblemLanguageResultExecution timeMemory
373759sofapudenWall (IOI14_wall)C++14
100 / 100
1006 ms216972 KiB
#include "wall.h" #include <bits/stdc++.h> using namespace std; const int maxn = 2e6+5; const int maxv = 1<<30; struct seg{ seg *r, *l; int lb, rb; bool ch; int mxval, mnval; int mid; seg () : l(NULL), r(NULL), ch(false), mnval(0), mxval(maxv) {} void init(int lx, int rx){ lb = lx, rb = rx; mid = (lx+rx)>>1; } void ex(){ if(r == NULL){ r = new seg; r->init(mid+1,rb); } if(l == NULL){ l = new seg; l->init(lb,mid); } } void push(){ r->mxval = min(r->mxval,mxval); r->mnval = min(r->mnval,r->mxval); r->mnval = max(r->mnval,mnval); r->mxval = max(r->mxval,r->mnval); r->ch = true; l->mxval = min(l->mxval,mxval); l->mnval = min(l->mnval,l->mxval); l->mnval = max(l->mnval,mnval); l->mxval = max(l->mxval,l->mnval); l->ch = true; mnval = 0; mxval = maxv; ch = false; } void add(int cl, int cr, int am){ if(lb > cr || rb < cl)return; if(lb >= cl && rb <= cr){ mnval = max(mnval,am); mxval = max(mxval,mnval); ch = true; return; } ex(); if(ch)push(); l->add(cl,cr,am); r->add(cl,cr,am); } void rem(int cl, int cr, int am){ if(lb > cr || rb < cl)return; if(lb >= cl && rb <= cr){ mxval = min(mxval,am); mnval = min(mnval,mxval); ch = true; return; } ex(); if(ch)push(); l->rem(cl,cr,am); r->rem(cl,cr,am); } int fin(int x){ if(lb == rb){ return mnval; } ex(); if(ch)push(); if(x > mid)return r->fin(x); return l->fin(x); } }; seg *root = new seg; void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ root->init(0,n-1); for(int i = 0; i < k; ++i){ if(op[i] == 1){ root->add(left[i],right[i],height[i]); } else{ root->rem(left[i],right[i],height[i]); } } for(int i = 0; i < n; ++i){ finalHeight[i] = root->fin(i); } return; }

Compilation message (stderr)

wall.cpp: In constructor 'seg::seg()':
wall.cpp:11:11: warning: 'seg::l' will be initialized after [-Wreorder]
   11 |  seg *r, *l;
      |           ^
wall.cpp:11:7: warning:   'seg* seg::r' [-Wreorder]
   11 |  seg *r, *l;
      |       ^
wall.cpp:17:2: warning:   when initialized here [-Wreorder]
   17 |  seg () : l(NULL), r(NULL), ch(false), mnval(0), mxval(maxv) {}
      |  ^~~
wall.cpp:14:13: warning: 'seg::mnval' will be initialized after [-Wreorder]
   14 |  int mxval, mnval;
      |             ^~~~~
wall.cpp:14:6: warning:   'int seg::mxval' [-Wreorder]
   14 |  int mxval, mnval;
      |      ^~~~~
wall.cpp:17:2: warning:   when initialized here [-Wreorder]
   17 |  seg () : l(NULL), r(NULL), ch(false), mnval(0), mxval(maxv) {}
      |  ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...