궁합 쌍 찾기

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

요약
2개에서 10개의 정수와 목표값이 주어질 때, 합이 목표값이 되는 모든 위치 쌍을 사전순으로 출력하고 개수를 마지막 줄에 출력한다.
난이도

쉬움10점 중 3점

유형
정렬, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

첫째 줄에 정수가 여러 개 주어지고, 둘째 줄에 목표 값이 하나 주어진다. 서로 다른 두 위치에 있는 두 수의 합이 목표 값과 같은 쌍을 모두 출력하고, 맨 아랫줄에 그 쌍의 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 빈칸으로 구분된 정수가 2개 이상 10개 이하 주어진다. 둘째 줄에는 목표 값인 정수가 하나 주어진다. 주어지는 정수는 모두 100,000보다 작거나 같은 자연수이다.

출력

찾은 쌍을 한 줄에 하나씩 출력하고, 맨 아랫줄에 쌍의 개수를 출력한다.

한 쌍은 a≤ba \le b가 되도록 aa와 bb를 이 순서로 한 줄에 출력한다. 구성이 같고 순서만 다른 (a,b)(a, b)와 (b,a)(b, a)는 같은 쌍으로 본다.

쌍은 위치로 센다. 조건을 만족하는 서로 다른 두 위치 i<ji < j를 고르는 방법마다 한 줄씩 출력하고, 값이 같은 쌍이 이미 나왔더라도 따로 출력하고 따로 센다. 예를 들어 입력이 1 1 2이고 목표 값이 33이면 (1,2)(1, 2)를 두 줄 출력하고 개수는 22이다.

쌍이 여러 개면 사전 순으로 출력한다. (a,b)(a, b)가 (c,d)(c, d)보다 사전 순으로 앞선다는 것은 a<ca < c이거나, a=ca = c이면서 b<db < d라는 뜻이다.

조건을 만족하는 쌍이 하나도 없으면 개수인 00만 출력한다.

예제3

  1. 예제 1

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

    입력
    1 2 3
    100
    
    예상 출력
    0
    
  3. 예제 3

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