RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R01479

원형으로 구슬 배치하기

Gold V 골드 V
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

여러 색의 구슬이 있다. 색이 \(i\) 인 구슬은 \(c_i\) 개 있다 (\(i = 1, 2, \dots, n\)). 이 구슬들 중에서 세 개 이상을 골라 원형으로 배열하려고 한다. 단, 다음 조건을 만족해야 한다.

  • 원형으로 놓인 연속한 세 구슬마다, 그 중 적어도 두 개는 같은 색이어야 한다.

즉, 고른 구슬을 원형으로 \(a_0, a_1, \dots, a_{k-1}\) 순서로 놓았다면, 모든 \(i\) (\(0 \le i \le k-1\)) 에 대해 세 구슬 \(a_i,\ a_{(i+1)\bmod k},\ a_{(i+2)\bmod k}\) 중 적어도 두 개의 색이 같아야 한다.

배열할 수 있는 구슬의 최대 개수를 구하여라. 조건을 만족하도록 세 개 이상을 고를 수 없으면 \(0\) 을 출력한다.

제약

\(1 \le n \le 2 \cdot 10^5\)

\(1 \le c_i \le 10^9\)

입력 형식

첫째 줄에 색의 종류 수 \(n\) 이 주어진다.

둘째 줄에 \(n\) 개의 정수 \(c_1, c_2, \dots, c_n\) 이 공백으로 구분되어 주어진다. \(c_i\) 는 색이 \(i\) 인 구슬의 개수다.

출력 형식

배열할 수 있는 구슬의 최대 개수를 한 줄에 출력한다.

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

각 색을 크기 \(2\) 인 덩어리로 두면 \([1,1,2,2,3,3,4,4]\) 처럼 모든 연속한 세 구슬에 같은 색이 둘 이상 들어간다. 모든 \(8\) 개를 사용할 수 있다.

예제 2
입력
5
1 1 1 1 6
출력
9
설명

\(5\) 의 구슬 \(6\) 개를 둘씩 묶어 \(3\) 개의 호로 나누고, 그 사이 \(3\) 곳에 서로 다른 단일 구슬을 끼워 넣을 수 있다: \([5,5,1,5,5,2,5,5,3]\). 모두 \(6+3 = 9\) 개.

예제 3
입력
3
1 1 1
출력
0
설명

모든 색이 한 개뿐이라 어떤 세 구슬을 골라도 같은 색이 둘이 될 수 없다. 조건을 만족하는 배열이 없으므로 \(0\).

문제 정보

riseoj 작성

출처 Original

평가 및 의견

원형으로 구슬 배치하기

개요
출제자 난이도 Gold V 골드 V 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

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

풀이 제출

원형으로 구슬 배치하기

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