숫자 놀이

시간 제한2초메모리 제한128 MB

요약
N이 2의 거듭제곱일 때 주어진 2N-1개의 정수 중 정확히 N개를 골라 합이 N으로 나누어지도록 배가법으로 구성하는 문제입니다.
난이도

어려움10점 중 8점

유형
분할 정복, 수학, 조합론, 그리디
정답자
아직 제출이 없습니다

문제

N=2kN = 2^k이고 1≤k≤101 \le k \le 10인 정수 NN이 주어진다. 이어서 2N−12N - 1개의 정수가 주어진다.

주어진 수 중에서 정확히 NN개를 골라, 고른 수들의 합이 NN으로 나누어떨어지게 하려고 한다. 조건을 만족하는 NN개의 수를 출력하라. 가능한 답이 여러 개라면 그중 아무거나 하나만 출력하면 된다.

입력

첫째 줄에 NN이 주어진다.

둘째 줄에는 2N−12N - 1개의 정수가 주어진다. 각 정수는 00 이상 10001000 이하이다.

출력

첫째 줄에 합이 NN으로 나누어떨어지는 NN개의 수를 공백으로 구분해 출력한다.

가능한 답이 여러 개라면 그중 아무거나 하나만 출력해도 된다. 조건을 만족하는 선택이 없다면 -1을 출력한다.

예제1

  1. 예제 1

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