메가노미노

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

요약
각 질의 i에 대해, 서로 같은 눈을 가진 끝을 맞붙이고 반대쪽 두 끝의 합이 i가 되는 서로 다른 타일 쌍의 수를 센다. In Korean: 각 질의 i마다 한쪽 끝을 같은 수로 맞대고 반대쪽 두 끝의 합이 i가 되는, 서로 다른 두 타일의 쌍을 센다.
난이도

보통10점 중 5점

유형
해시맵, 완전 탐색, 조합론
정답자
아직 제출이 없습니다

문제

메가노미노는 양 끝이 있는 타일이며, 각 끝에는 점의 개수가 표시되어 있습니다. 각 끝의 점은 00개부터 10910^9개까지 가능합니다. 이 퍼즐에서는 두 개의 메가노미노를 나란히 놓아, 한 타일의 한 끝이 다른 타일의 한 끝과 맞닿게 합니다. 맞닿는 두 끝의 점 개수는 서로 같아야 합니다. 또한 맞닿지 않는 반대쪽 두 끝의 점 개수의 합이 주어진 수 ii와 같아야 합니다.

각 질의 값 ii에 대해, 이렇게 배치할 수 있는 타일 쌍이 몇 개인지 세세요.

입력

첫 번째 줄에는 두 정수 nn과 mm (0<n<100000 < n < 10000, 0<m≤1000 < m \le 100)이 주어집니다. 각각 메가노미노 타일의 개수와 질의의 개수입니다. 다음 nn개의 줄에는 각 타일의 두 끝에 있는 점의 개수를 나타내는 두 정수가 주어집니다. 완전히 같은 타일은 두 개 이상 존재하지 않습니다. 이어지는 mm개의 줄에는 각각 하나의 질의 값 ii가 주어집니다.

출력

질의마다 한 줄씩, 주어진 순서대로 mm개의 줄을 출력합니다. 각 줄에는, 두 타일의 맞닿는 끝의 점 개수가 서로 같고 맞닿지 않는 반대쪽 두 끝의 점 개수의 합이 ii가 되도록 놓을 수 있는, 서로 다른 두 타일로 이루어진 (순서를 구분하지 않는) 쌍의 개수를 정수 하나로 출력하세요. 한 쌍의 두 타일은 반드시 서로 달라야 하며, 같은 타일을 두 번 쓸 수 없습니다.

예제2

  1. 예제 1

    입력
    3 2
    1 5
    6 1
    1 7
    11
    13
    
    예상 출력
    1
    1
    
  2. 예제 2

    입력
    2 1
    1 2
    3 4
    10
    
    예상 출력
    0