만드는 중입니다

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

카드 게임

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

요약
N장의 숫자 카드에서 두 사람이 각각 두 장씩 뽑을 때, 빌리우스의 합이 아다마스의 합보다 정확히 C만큼 큰 경우의 수를 구합니다.
난이도

보통10점 중 6점

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

문제

비루스와 아도마스는 간단한 카드 게임을 한다. 덱에는 NN장의 카드가 있고, 각 카드에는 수가 적혀 있다. 각 플레이어는 덱에서 카드 두 장을 무작위로 뽑아 두 카드의 수를 더한다. 합이 더 큰 플레이어가 이긴다.

비루스는 수 CC를 정하고, 자신의 합에서 아도마스의 합을 뺀 값이 정확히 CC가 되도록 이기려고 한다. 두 사람이 카드를 뽑는 방법 중 비루스가 정확히 CC점 차이로 이기는 경우의 수를 구한다.

같은 수가 여러 장의 카드에 적혀 있을 수 있다. 이때 같은 수가 적힌 카드 중 어느 것을 뽑는지에 따라 서로 다른 경우로 센다. 다만 한 플레이어가 뽑은 두 카드의 순서는 상관없다. 예를 들어 수 1이 적힌 카드가 두 장, 수 2가 적힌 카드가 세 장 있다면, 아도마스가 수 1과 2가 적힌 카드를 뽑는 방법은 여섯 가지이다.

입력

첫째 줄에 카드의 개수 NN과 목표 점수 차이 CC가 주어진다 (4≤N≤1 5004 \le N \le 1\,500, 0≤C≤1090 \le C \le 10^9). 둘째 줄에는 각 카드에 적힌 수 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다 (0≤Ai≤1090 \le A_i \le 10^9).

출력

비루스가 정확히 CC점 차이로 이기도록 카드를 뽑는 방법의 수를 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    5 0
    2 2 2 2 2
    
    예상 출력
    30