프로그래밍 알고리즘
[정올 1214] 히스토그램
꾸준한사람
2022. 12. 31. 04:52
반응형
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&code=1214&sca=99
JUNGOL
www.jungol.co.kr
#include <stdio.h>
int N;
typedef unsigned long long u64;
u64 st[100010], ans, min = 1000000000;
int main(void)
{
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf(" %lld", &st[i]);
min = (st[i] < min) ? (st[i]) : (min);
}
ans = min * (u64)N;
for (int i = 0; i < N; i++) { //양 옆으로 자기보다 작은 게 나올 때까지 계산
if (st[i] <= min) continue;
int p, n;
u64 area;
for (p = i;; p++)
if (p >= N || st[p] < st[i]) break;
for (n = i;; n--)
if (n < 0 || st[n] < st[i]) { n++; break; }
area = ((u64)p - (u64)n) * st[i];
if (ans < area) ans = area;
}
printf("%lld\n", ans);
return 0;
}
반응형