또또 수열 문제야

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

요약
모든 N^2개 쌍의 곱을 담은 중복 집합이 주어질 때 원래 길이 N의 양의 정수 수열을 복원하고, 불가능하면 NO를 출력한다.
난이도

보통10점 중 7점

유형
수학, 정렬, 해시맵, 그리디
정답자
아직 제출이 없습니다

문제

길이 NN의 양의 정수로 이루어진 수열 AA가 주어질 때, 중복 집합(multiset) MM을 다음과 같이 정의하자. 중복 집합이란, 중복된 원소를 허용하는 집합을 의미한다.

M=A_i×A_j∣1≤i,j≤NM=\\{A\_{i}\times A\_{j} \mid 1\leq i,j\leq N\\}

중복 집합 MM의 모든 원소가 주어질 때, 원래의 수열 AA를 찾아보자.

입력

첫 번째 줄에 수열 AA의 길이인 양의 정수 NN이 주어진다. (1≤N≤1,000)(1\leq N \leq 1\\,000)

두 번째 줄에 중복 집합 MM의 원소인 m_1,m_2,…,m_N2m\_1,m\_2,\dots, m\_{N^2}이 공백으로 구분되어 주어진다. (1≤m_i≤1018)\left(1\leq m\_i \leq 10^{18}\right)

출력

만약 원래의 수열 AA를 구성할 수 있다면, 첫 번째 줄에 YES를 출력하고 두 번째 줄에 수열 AA의 원소인 A_1,A_2,…,A_NA\_{1}, A\_{2}, \dots , A\_{N}을 공백으로 구분하여 출력한다.

그렇지 않다면 첫 번째 줄에 NO를 출력한다.

가능한 답이 여러 개라면 그중 아무거나 출력한다.

예제2

  1. 예제 1

    입력
    3
    1 2 2 1 2 1 1 2 4
    
    예상 출력
    YES
    1 1 2
    
  2. 예제 2

    입력
    2
    1 3 4 9
    
    예상 출력
    NO