제출 #567672

#제출 시각아이디문제언어결과실행 시간메모리
567672JesusWall (IOI14_wall)C++14
컴파일 에러
0 ms0 KiB
#include "wall.h" #include<bits/stdc++.h> using namespace std; int lim; struct nodo{ int altura=0; int q_min=1000000000; }; nodo st[8000001]; nodo reiniciar; void heredar(int pos){ for(int i=pos*2;i<=pos*2+1;i++){ st[i].q_min=min(st[i].q_min,st[pos].q_min); if(st[pos].q_min<=st[i].altura) st[i].altura=max(st[pos].q_min,st[pos].altura); else st[i].altura=max(st[i].altura,st[pos].altura); } st[pos]=reiniciar; } void st_actualizar(int tp,int alt,int izq,int der,int i=0,int j=lim-1,int pos=1){ if(izq==i&&der==j){ if(tp==2){ st[pos].q_min=min(st[pos].q_min,alt); if(st[pos].altura>0) st[pos].altura=min(st[pos].altura,alt); } else st[pos].altura=max(st[pos].altura,alt); } else{ if(st[pos].altura>0||st[pos].q_min<1000000000) heredar(pos); if(izq<=(i+j)/2) st_actualizar(tp,alt,izq,min(der,(i+j)/2),i,(i+j)/2,pos*2); if(der>(i+j)/2) st_actualizar(tp,alt,max(izq,(i+j)/2+1),der,(i+j)/2+1,j,pos*2+1); } return; } int resultado[2000000]; void revision(int i=0,int j=lim-1,int pos=1){ if(i==j){ resultado[i]=st[pos].altura; } else{ if(st[pos].altura>0||st[pos].q_min<1000000000) heredar(pos); revision(i,(i+j)/2,pos*2); revision((i+j)/2+1,j,pos*2+1); } return; } void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){ lim=n; for(int i=0;i<k;i++){ st_actualizar(op[i],height[i],left[i],right[i]); } revision(); for(int i=0;i<n;i++){ finalHeight[i]=resultado[i]; } return; }

컴파일 시 표준 에러 (stderr) 메시지

Compilation timeout while compiling wall