포럼
문제 USACO0660

최소 최대 부분 배열

설명

*참고: 이 문제의 시간 제한은 기본값의 1.5배인 3초이다.*

길이 \(N\)의 정수 배열 \(a_1,a_2,\dots,a_N\)(\(2\le N\le 10^6, 1\le a_i\le N\))이 주어진다. \(a\)\(N(N+1)/2\)개의 모든 연속 부분 배열에 대해 아래 부분 문제의 답을 모두 더한 값을 출력하시오.

비어 있지 않은 정수 리스트가 주어지면, 리스트의 크기가 정확히 1이 될 때까지 다음 연산을 번갈아 수행한다(첫 번째 연산부터 시작).

  1. 리스트에서 연속한 두 정수를 그 최솟값으로 바꾼다.
  2. 리스트에서 연속한 두 정수를 그 최댓값으로 바꾼다.

마지막에 남는 정수의 최댓값을 구한다.

예를 들어,

[4, 10, 3] -> [4, 3] -> [4]
[3, 4, 10] -> [3, 10] -> [10]

첫 번째 배열에서는 \((10, 3)\)\(\min(10, 3)=3\)으로, \((4, 3)\)\(\max(4, 3)=4\)로 바뀐다.

Problem credits: Benjamin Qi

제약

배점

  • 입력 4-5: \(N\le 100\)
  • 입력 6-7: \(N\le 5000\)
  • 입력 8-9: \(\max(a)\le 10\)
  • 입력 10-13: 추가 제약이 없다.

Problem credits: Benjamin Qi

입력 형식

첫째 줄에 \(N\)이 주어진다.

둘째 줄에 \(a_1,a_2,\dots,a_N\)이 주어진다.

출력 형식

모든 부분 배열에 대한 부분 문제의 답의 합을 출력한다.

예제 1
입력
2
2 1
출력
4
설명

The answer for \([2]\) is \(2\), the answer for \([1]\) is \(1\), and the answer for
\([2, 1]\) is \(1\).

Thus, our output should be \(2+1+1 = 4\).

예제 2
입력
3
3 1 3
출력
12
예제 3
입력
4
2 4 1 3
출력
22
설명

Consider the subarray \([2, 4, 1, 3]\).

  1. Applying the first operation on (1, 3), our new array is \([2, 4, 1]\).
  2. Applying the second operation on (4, 1), our new array is \([2, 4]\).
  3. Applying the third operation on (2, 4), our final number is \(2\).

It can be proven that \(2\) is the maximum possible value of the final number.

문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2024-2025 > February > Platinum

태그

평가 및 의견

Min Max Subarrays

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Min Max Subarrays

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8