일부 값이 지워진 n명의 킬/데스 표가 점수순으로 주어질 때, 종료된 데스매치 게임이 만들 수 있는 완성된 표의 수를 센다.
보통7조합론완전 탐색동적 계획법수학아직 제출이 없습니다시간 제한10초메모리 제한512 MB인기 있는 컴퓨터 게임의 데스매치 모드에서 n명의 선수가 가상 세계에서 서로 싸운다. 선수 x의 점수는 두 정수 fx와 dx로 이루어진다. fx는 x가 다른 선수를 죽인 횟수이고, dx는 x가 다른 선수에게 죽은 횟수이다.
선수 x가 선수 y를 죽이면 fx와 dy가 각각 1씩 늘어난다. 죽은 선수는 곧바로 다시 나타나 게임을 이어 간다. 자기 자신을 죽일 수는 없고, 두 죽음이 같은 순간에 일어나지도 않는다. 어떤 선수의 킬 수가 n이 되는 순간 게임이 끝난다. 따라서 끝난 게임에서 킬 수가 n인 선수는 정확히 한 명이고, 나머지 선수의 킬 수는 모두 n보다 작다.
끝난 게임의 결과는 n개의 행과 2개의 열로 이루어진 표이다. 각 행은 선수 한 명의 점수를 fx, dx 순서로 담는다. 선수는 점수에 따라 내림차순으로 놓인다. fx가 큰 선수가 앞에 오고, fx가 같은 선수끼리는 dx가 작은 선수가 앞에 온다.
부분 결과는 끝난 게임의 결과에서 값 몇 개를 지운 표이다. 부분 결과 하나가 주어진다. 이 부분 결과가 나올 수 있는 올바른 결과의 개수를 m이라고 하자. m을 109+7로 나눈 나머지를 구하라.
첫째 줄에 선수의 수 n이 주어진다 (2≤n≤10).
다음 n개 줄 중 k번째 줄에는 부분 결과의 k번째 행에 해당하는 두 정수 fk와 dk가 주어진다 (−1≤fk≤n, −1≤dk≤n2). 지워진 값은 -1로 나타낸다.
주어진 부분 결과는 끝난 게임의 어떤 결과에서 위 방법으로 얻은 것이다.
가능한 원래 결과의 개수를 109+7로 나눈 나머지를 출력한다.
첫 번째 예제에서 가능한 원래 결과는 (2 0, 0 2)와 (2 1, 1 2)이다.