제출 #373755

#제출 시각아이디문제언어결과실행 시간메모리
373755sofapuden벽 (IOI14_wall)C++14
24 / 100
735 ms24428 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(){ if(r->mxval > mxval){ r->mxval = mxval; } if(r->mnval < mnval){ r->mnval = mnval; } r->mnval = min(r->mnval,r->mxval); r->ch = true; if(l->mxval > mxval){ l->mxval = mxval; } if(l->mnval < mnval){ l->mnval = mnval; } l->mnval = min(l->mnval,l->mxval); 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){ mxval = max(mxval,am); mnval = max(mnval,am); 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,am); 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; }

컴파일 시 표준 에러 (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...