상범이의 우울

시간 제한1초메모리 제한128 MB

요약
우울 구간마다 시작 전 2T일(가장 긴 구간 중 하나는 3T일) 동안 꽃을 주는 규칙에서, 3T 규칙을 적용할 최장 구간을 잘 선택해 꽃을 주는 날의 개수를 최대화하는 문제입니다.
난이도

보통10점 중 7점

유형
구간, 그리디, 누적 합
정답자
아직 제출이 없습니다

문제

민균이는 앞으로 N일 동안의 상범이의 기분을 예측했다.

각 날의 기분은 정수로 표현된다. 기분이 음수인 날은 우울한 날이며, 음수인 날들이 연속된 최대 구간을 우울 기간이라고 한다.

길이가 T인 우울 기간에 대해, 민균이는 그 기간이 시작되기 2T일 전부터 시작 바로 전날까지 꽃을 선물해야 한다. 단, 가장 긴 우울 기간 중 정확히 하나에 대해서는 2T일 전이 아니라 3T일 전부터 꽃을 선물해야 한다. 가장 긴 우울 기간이 여러 개라면 그중 하나만 3T 규칙을 적용하고, 나머지는 2T 규칙을 적용한다.

꽃을 주는 날로 셀 수 있는 것은 예측한 N일 안에 있는 날뿐이다. 필요한 기간이 1일보다 앞에서 시작한다면, 1일부터 가능한 만큼만 센다.

3T 규칙을 적용할 가장 긴 우울 기간을 적절히 선택하여, 민균이가 꽃을 선물하는 서로 다른 날의 수를 최대로 만들려고 한다. 그 최댓값을 구하시오.

입력

첫째 줄에 예측한 날의 수 N (1 <= N <= 100,000)이 주어진다.

둘째 줄에 각 날의 상범이의 기분을 나타내는 N개의 정수가 주어진다. 각 기분의 절댓값은 100 이하이다.

출력

민균이가 상범이에게 꽃을 선물해야 하는 날의 수의 최댓값을 출력한다.

예제2

  1. 예제 1

    입력
    8
    1 -1 4 3 8 -2 3 -3
    
    예상 출력
    6
    
  2. 예제 2

    입력
    15
    1 2 -1 2 3 4 5 6 1 4 8 3 -1 -2 1
    
    예상 출력
    8