[C++] 백준 2304번: 창고 다각형

2022. 7. 5. 16:31·problem solving/백준

문제

https://www.acmicpc.net/problem/2304
Olympiad > 한국정보올림피아드 > KOI 2005 > 초등부 2번
초등부문제라는 게 날 자극한다..

풀이


웅덩이가 없으려면 5 2 6 처럼 높은 곳에서 아래로 내려갔다가 다시 올라가면 안된다는 조건이 있어야 한다.

높이의 max를 구해 반으로 가르고 -> , <- 나눠 총 넓이를 구했다.

소스

#include <iostream>

int main()
{
    int N =0, L =0, H=0, area =0;
    int pillars[10001];
    int left =10001, right =0, max = 0; // position

    std::cin >> N;
    for(int i =0; i<N; ++i)
    {
        std::cin >> L >> H;
        pillars[L] = H;
        if(pillars[L] > pillars[max]) max = L;
        if(left > L) left = L;
        if(right < L) right = L;
    }

   // -> max
    int height = pillars[left], pos = left;
    for(int i = left+1; i <= max; ++i)
    {
        if(pillars[i] >= height)
        {
            area +=(i-pos)*height;
            pos = i;bheight = pillars[i];
        }
    }
    
	// max <-
    height = pillars[right]; pos = right;
    for(int i = right-1; i >= max; --i)
    {
        if(pillars[i] >= height)
        {
            area +=(pos-i)*height;
            pos = i; height = pillars[i];
        }
    }
    std::cout << area + pillars[max];
    return 0;
}
저작자표시 비영리 변경금지 (새창열림)
'problem solving/백준' 카테고리의 다른 글
  • [C++] 백준 5397번: 키로거
  • [C++] 백준 2841번: 외계인의 기타 연주
  • [C++] 백준 3986번: 좋은 단어
  • [C++] 백준 3078번: 좋은 친구
u1qns
u1qns
http://github.com/u1qns
  • u1qns
    개발 블로그
    u1qns
  • 전체
    오늘
    어제
    • 분류 전체보기 (173)
      • 회고 (1)
      • programming (17)
        • 개념 정리 (6)
        • CI CD (1)
        • 트러블 슈팅 (0)
        • 환경설정 및 팁 (7)
      • problem solving (155)
        • 개념 정리 (3)
        • 백준 (129)
        • SWEA (15)
        • 프로그래머스 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    SSAFY수료식
    백준
    DP
    boj
    DFS
    되추적
    그리디
    삼성청년SW아카데미
    미해결
    구현
    cpp
    cmath
    C++
    SWEA
    SSAFY
    완전탐색
    투포인터
    HELLOSSAFY
    BFS
    POW
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
u1qns
[C++] 백준 2304번: 창고 다각형
상단으로

티스토리툴바