아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

집정관

면접 대비

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

요약
숨겨진 N개의 투표에서 특정 위치의 값과 특정 값의 등장 횟수를 묻는 질의만으로 N/3을 초과하는 후보를 찾거나, 없음을 판정한다.
난이도

어려움10점 중 8점

유형
분할 정복, 완전 탐색, 구현, 조합론
정답자
아직 제출이 없습니다

문제

레메에서 집정관 선거가 열린다. 이 선거에는 NN명의 선거인이 있고, 각 선거인은 서로 다른 1 000 000 0001\,000\,000\,000명의 후보 중 하나에게 투표할 수 있다. 후보가 당선되려면 투표의 1/31/3을 초과하는 표를 받아야 한다(레메는 매년 집정관 두 명을 선출하기 때문에 이렇게 된다). 당신은 투표 조작을 꿈꾸는 사람이다. 조작을 더 효과적으로 하려면 당선 가능성이 있는 후보를 최소 한 명 알아야 한다. 안타깝게도 각 선거인이 누구에게 투표했는지는 공개되지 않는다. 대가를 치르지 않고서는 알 수 없다. 게다가 이미 개표를 마친 전임 집정관들은 특정 후보가 받은 표의 수를 알려줄 수 있다. 물론 이것도 대가를 치러야 한다.

더 형식적으로, 값이 00 이상 1 000 000 0001\,000\,000\,000 미만인 NN개의 정수 v[1]…v[N]v[1] \dots v[N]로 이루어진 숨겨진 수열 vv를 생각하자. 이 수열에 대해 두 종류의 질의를 할 수 있다.

  • 수열에서 특정 원소 v[i]v[i]의 값을 알아낼 수 있다.
  • 특정 값 xx가 수열에 몇 번 나타나는지 알 수 있다.

수열에서 N/3N/3번을 초과해 나타나는 값 xx를 찾아야 하며, 수행하는 질의의 수는 충분히 적어야 한다.

NN이 주어졌을 때, 주어진 질의를 사용해 선거의 당선자를 하나 찾거나, 당선자가 존재하지 않는다고 알려라.

예제1

  1. 예제 1

    입력
    1
    0
    
    예상 출력
    0