만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

카드 게임

시간 제한0.3초메모리 제한1024 MB

요약
원형으로 놓인 3N장의 카드를 집을 때 손에 드는 카드 수의 최댓값을 가장 작게 만드는 시작 카드를 모두 찾습니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

이반이 새로운 1인용 카드 게임을 만들었다. 이 게임은 3⋅N3 \cdot N장의 카드로 진행하며, 1부터 NN까지의 각 정수가 정확히 세 장의 카드에 적혀 있다.

처음에 카드를 섞어 탁자 위에 원형으로 놓는다. 그림은 N=5N = 5일 때의 한 가지 배치이다.

플레이어는 시작할 카드를 고르고, 시계 방향으로 카드를 한 장씩 집어 간다. 같은 숫자가 적힌 카드 세 장을 손에 갖게 되면, 그 세 장을 즉시 치운다. 그렇지 않으면 새로 집은 카드를 손에 쥐고 있는다. 모든 카드를 집을 때까지 이 과정을 이어 간다. 게임이 끝나면 모든 카드가 치워져 있고, 손에 남은 카드는 없다.

매 동작 뒤에 손에 쥔 카드의 수를 센다. 게임의 점수는 모든 동작에서 나온 손패 수의 최댓값이다.

주어진 카드 배열에 대해, 가능한 점수의 최솟값과 그 점수를 얻는 모든 시작 카드를 구하라.

입력

첫 줄에 NN (1≤N≤25,0001 \le N \le 25,000)이 주어진다. 이는 카드에 적힌 가장 큰 숫자이다. 둘째 줄에는 3⋅N3 \cdot N개의 정수가 맨 위 카드부터 시계 방향 순서로 주어진다. 1부터 NN까지의 각 숫자는 정확히 세 번씩 나타난다. 카드는 입력된 순서대로 1부터 3⋅N3 \cdot N까지 번호가 매겨진다.

출력

첫 줄에 두 정수 SS와 KK를 출력한다. SS는 가능한 점수의 최솟값이고, KK는 이 점수를 얻는 시작 카드의 개수이다. 둘째 줄에는 그러한 시작 카드의 번호를 오름차순으로 KK개 출력한다.

예제2

  1. 예제 1

    입력
    5
    5 4 3 3 5 1 4 2 1 5 2 1 3 4 2
    
    예상 출력
    6 2
    6 13
    
  2. 예제 2

    입력
    2
    2 1 2 1 2 1
    
    예상 출력
    4 6
    1 2 3 4 5 6