일일이 계산하는방법

 

int gap = min(block[i-1], block[i+1]);

temp[i] = (block[i]-gap) <= 0 ? 1 : (block[i]-gap);

이런식으로 양옆의 블록크기를 고려해서 루프를 돌고


block[k]-=temp[k];

루프 다시 선언해서 실제 블록에 적용해주는 알고리즘을 쓰려했는데


배열이 10만단위라서 일일이 10만개 다 탐색하려면 당연히 시간초과 뜰거같아서


그냥 C++ 써서 큐를 만든다음 높이가 0인 블록을 제외한 놈들의 인덱스를 큐에 넣고 빠르게 참조하는식으로 했는데도 시간초과잼ㅋㅋ