#include <iostream>usingnamespacestd;intcalculate_area(int*high,intstart,intn)//각 지점에서 시작한 직사각형 넓이{int*end=newint[n-start];intarea,count=0,most=0;end[0]=start;for(inti=start;i<n;i++)//시작한 지점의 높이보다 작은 위치를 저장{if(high[end[count]]>high[i]){end[count+1]=i;count++;}if(i==n-1&&end[count]!=n-1){end[count+1]=n;count++;}}if(count==0){most=high[start]*(n-start);returnmost;}for(inti=0;i+1<=count;i++){area=(end[i+1]-end[0])*high[end[i]];if(most<area)most=area;}returnmost;}intmain(){intcases=0;cin>>cases;for(inti=0;i<cases;i++){intn,area,most=0;cin>>n;int*high=newint[20000];//높이for(intj=0;j<n;j++){cin>>high[j];}for(intj=0;j<n;j++){area=calculate_area(high,j,n);if(most<area)most=area;}cout<<most<<endl;}}
박태우
##소스코드
c++ 프로그램으로 돌리면 답은 나오는데 답안제출하니 런타임오류가 뜨네요
메모리 초과때문인거 같은데 왜그러죠 ㅜㅜ
위의 소스코드는 아니지만 end의 메모리는 시작한 지점의 높이보다 작은 높이의 갯수를
계산해 동적할당을 해도 런타임오류가 뜨네요;;
8년 전