Submission #636948

#TimeUsernameProblemLanguageResultExecution timeMemory
636948PoonYaPat벽 (IOI14_wall)C++14
61 / 100
493 ms59960 KiB
#include "wall.h" #include <bits/stdc++.h> using namespace std; struct A { int mmax,mmin; } lz[1<<21]; int ans[2000001]; void pushlz(int l, int r, int idx) { if (l!=r) { int u=2*idx, v=2*idx+1; lz[u].mmax=min(lz[idx].mmax,lz[u].mmax); lz[u].mmin=min(lz[idx].mmax,lz[u].mmin); lz[v].mmax=min(lz[idx].mmax,lz[v].mmax); lz[v].mmin=min(lz[idx].mmax,lz[v].mmin); lz[idx].mmax=INT_MAX; lz[u].mmax=max(lz[idx].mmin,lz[u].mmax); lz[u].mmin=max(lz[idx].mmin,lz[u].mmin); lz[v].mmax=max(lz[idx].mmin,lz[v].mmax); lz[v].mmin=max(lz[idx].mmin,lz[v].mmin); lz[idx].mmin=0; } } void update(int l, int r, int idx, int x, int y, int val, int mode) { pushlz(l,r,idx); if (x>r || y<l) return; if (x<=l && r<=y) { if (mode==1) { lz[idx].mmin=max(lz[idx].mmin,val); lz[idx].mmax=max(lz[idx].mmax,val); } else { lz[idx].mmax=min(lz[idx].mmax,val); lz[idx].mmin=min(lz[idx].mmin,val); } } else { int mid=(l+r)/2; update(l,mid,2*idx,x,y,val,mode); update(mid+1,r,2*idx+1,x,y,val,mode); } } void dfs(int l, int r, int idx) { pushlz(l,r,idx); if (l==r) { ans[l]=lz[idx].mmin; } else { int mid=(l+r)/2; dfs(l,mid,2*idx); dfs(mid+1,r,2*idx+1); } } void buildWall(int n, int k, int op[], int l[], int r[], int h[], int finalHeight[]){ for (int i=1; i<=(1<<21); ++i) lz[i]={INT_MAX,0}; for (int i=0; i<k; ++i) update(1,n,1,++l[i],++r[i],h[i],op[i]); dfs(1,n,1); for (int i=0; i<n; ++i) finalHeight[i]=ans[i+1]; }

Compilation message (stderr)

wall.cpp: In function 'void buildWall(int, int, int*, int*, int*, int*, int*)':
wall.cpp:59:41: warning: iteration 2097151 invokes undefined behavior [-Waggressive-loop-optimizations]
   59 |     for (int i=1; i<=(1<<21); ++i) lz[i]={INT_MAX,0};
      |                                    ~~~~~^~~~~~~~~~~~
wall.cpp:59:20: note: within this loop
   59 |     for (int i=1; i<=(1<<21); ++i) lz[i]={INT_MAX,0};
      |                   ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...