명의 사람이 일렬로 서 있다. 사람들은 앞에서부터 번부터 번까지 번호가 붙어 있다.
각 사람은 야구의 어떤 한 팀을 응원하는 팬이다. 같은 팀을 응원하는 사람도 있을 수 있고, 서로 다른 팀을 응원하는 사람도 있을 수 있다.
여러분은 다음 함수를 호출하여 질의할 수 있다.
int query(vector<int> indices);
indices에는 서로 다른 사람의 번호들이 들어 있어야 한다. 이 함수를 호출하면, indices에 들어 있는 사람들이 응원하는 팀들의 서로 다른 종류의 수가 반환된다.
예를 들어, 선택한 사람들의 응원 팀이 라면 반환값은 이다.
여러분의 목표는 이러한 질의를 최대 번 이하로 사용하여, 각 팀의 팬 수가 각각 몇 명인지를 알아내는 것이다.
문제의 특성상 각 팀의 정확한 이름은 알아낼 수 없다. 따라서 정답은 팀 이름 자체가 아니라, 각 팀의 팬 수로 이루어진 multiset으로 판정한다. 예를 들어 실제 팬 수가 라면, 이를 순서만 바꾸어 제출한 것도 올바른 정답으로 인정된다.
구현 시 #include "baseballfan.h" 를 통해 baseballfan.h 헤더파일을 포함해야 함에 주의하라.
main 함수는 구현하면 안 된다.
Input
이 문제는 함수 호출형 문제이다.
채점 데이터는 내부적으로 다음과 같은 형식으로 주어진다.
는 번 사람이 응원하는 팀의 내부 번호이다. 제출한 프로그램은 를 직접 읽을 수 없으며, 채점 프로그램이 solve(N)을 호출한다.
Output
표준 출력으로 직접 답을 출력하지 말고, 다음 함수를 정확히 한 번 호출하여 답을 제출해야 한다.
void answer(vector<int> fan_counts);
fan_counts에는 각 팀의 팬 수를 담아야 한다. 순서는 상관없다.
Constraints
- .
- ().
query는 최대 번까지 호출할 수 있다.query에 넘기는indices의 크기는 이상 이하이어야 한다.indices의 모든 원소는 서로 달라야 하며, 이상 이하이어야 한다.
Subtasks
해설
관리자가 작성한 해설을 별도 페이지에서 볼 수 있어요.