Submission #795819

#TimeUsernameProblemLanguageResultExecution timeMemory
795819idiotcomputerWall (IOI14_wall)C++11
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "wall.h" using namespace std; const int MAX_N = 2000000; const int NINF = 0; const int INF = (1<<30); struct node { int opmin = INF; int opmax = NINF; }; node segt[4*MAX_N+1]; void app(int idx, node a){ segt[idx].opmax = min(max(segt[idx].opmax,a.opmax), a.opmin); segt[idx].opmin = min(max(segt[idx].opmin,a.opmax),a.opmin); return; } void upd(int l, int r, int idx, int tl, int tr, int w, int h){ if (l > tr || r < tl){ return; } if (l >= tl && r <= tr){ //mini if (w == 1){ segt[idx].opmin = min(segt[idx].opmin,h); segt[idx].opmax = min(segt[idx].opmax,h); } else { segt[idx].opmin = max(segt[idx].opmin,h); segt[idx].opmax = max(segt[idx].opmax,h); } return; } int m = (l+r)/2; app(2*idx+1,segt[idx]); app(2*idx+2,segt[idx]); segt[idx].opmin = INF; segt[idx].opmax = NINF; upd(l,m,2*idx+1,tl,tr,w,h); upd(m+1,r,2*idx+2,tl,tr,w,h); return; } void solve(int l, int r, int idx, int finalHeight[]){ if (l == r){ //cout << l << ": " << segt[idx].opmin << ", " << segt[idx].opmax << '\n'; if (segt[idx].opmin == INF && segt[idx].opmax == NINF){ finalHeight[l] = 0; } else { finalHeight[l] = min(segt[idx].opmin,segt[idx].opmax); } return; } int m = (l+r)/2; app(2*idx+1,segt[idx]); app(2*idx+2,segt[idx]); segt[idx].opmin = INF; segt[idx].opmax = NINF; solve(l,m,2*idx+1,finalHeight); solve(m+1,r,2*idx+2,finalHeight); return; } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ for (int i =0; i < k; i++){ upd(0,n-1,0,left[i],right[i],op[i]-1,height[i]); } solve(0,n-1,0,finalHeight); return; }

Compilation message (stderr)

Compilation timeout while compiling wall