만드는 중입니다

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

빠진 두 수

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

요약
두 번 나오는 수들 사이에서 한 번만 나오는 두 정수를 찾습니다. 스트림을 두 번의 실행으로 나누어 읽고, 각 실행은 64비트 정수 두 개를 다음 실행에 넘깁니다.
난이도

보통10점 중 6점

유형
비트 연산, 수학, 구현
정답자
아직 제출이 없습니다

문제

이 문제는 두 번 실행되는 문제다. 솔루션은 각 테스트에서 두 번 실행된다. 자세한 내용은 나머지 문제 설명과 입력 형식 섹션을 참고한다.

정수 스트림이 주어진다. 스트림의 각 정수는 정확히 두 번씩 등장한다. 다만 정확히 한 번만 등장하는 정수가 두 개 있다. 이 두 정수를 찾는 스트리밍 알고리즘을 작성한다.

입력

솔루션은 각 테스트에서 두 번 호출된다.

각 호출에서 첫 줄에는 두 정수 qq와 nn (q∈{1,2}q \in \{1, 2\}, 0≤n≤1060 \leq n \leq 10^6)이 주어진다. qq는 호출 번호이고, nn은 스트림 일부의 크기다. 두 번째 호출에서는 첫 줄에 정수 xx와 yy가 추가로 주어진다. 이는 첫 번째 호출 후 프로그램이 출력한 값이며, 같은 순서로 주어진다.

둘째 줄에는 공백으로 구분된 64비트 부호 없는 정수 nn개가 주어진다. 이것이 스트림의 일부다.

첫 번째와 두 번째 부분을 합치면, 등장하는 모든 정수는 정확히 두 번씩 나타난다. 다만 정확히 한 번만 나타나는 정수가 두 개 있다.

출력

프로그램은 64비트 부호 없는 정수 두 개를 출력한다. 첫 번째 호출에서 출력한 두 수는 두 번째 호출 때 같은 순서로 입력된다. 두 번째 호출에서 출력한 두 수가 정답이며, 순서는 상관없다.

예제2

  1. 예제 1

    입력
    1 5
    5 1 4 4 5
    
    예상 출력
    1 736
    
  2. 예제 2

    입력
    2 3 1 736
    9 9 3
    
    예상 출력
    1 3