만드는 중입니다

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

구간 합집합

시간 제한5초메모리 제한1024 MB

요약
중심 x_i와 반지름 a_i가 주어집니다. 반지름을 중심에 배정하는 모든 순열마다 구간 [x_i - r, x_i + r]의 합집합 길이를 구해 모두 더합니다.
난이도

어려움10점 중 9점

유형
정렬, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

NN개의 양의 정수 x1,x2,…,xNx_{1}, x_{2}, \ldots, x_{N}과 또 다른 NN개의 양의 정수 a1,a2,…,aNa_{1}, a_{2}, \ldots, a_{N}이 주어진다.

P=(p1,p2,…,pN)P = (p_{1}, p_{2}, \ldots, p_{N})을 {1,2,…,N}\{1, 2, \ldots, N\}의 순열이라고 하자. 처음에는 수직선 전체가 흰색이다. 각 1≤i≤N1 \le i \le N에 대해 구간 [xi−api,xi+api][x_{i} - a_{p_{i}}, x_{i} + a_{p_{i}}]를 검은색으로 칠한다. f(P)f(P)는 수직선 위에서 검은색으로 칠해진 구간의 전체 길이이다. 예를 들어 [1,3][1, 3], [2,4][2, 4], [6,7][6, 7]이 검은색으로 칠해졌다면 검은색 구간의 전체 길이는 4−1+7−6=44 - 1 + 7 - 6 = 4이다.

{1,2,…,N}\{1, 2, \ldots, N\}의 모든 순열 PP에 대한 f(P)f(P)의 합을 109+710^{9} + 7로 나눈 나머지를 구하라.

입력

첫째 줄에 정수 NN(1≤N≤15001 \le N \le 1500)이 주어진다.

둘째 줄에 공백으로 구분된 정수 x1,x2,…,xNx_{1}, x_{2}, \ldots, x_{N}(−109≤xi≤109-10^{9} \le x_{i} \le 10^{9})이 주어진다.

셋째 줄에 공백으로 구분된 정수 a1,a2,…,aNa_{1}, a_{2}, \ldots, a_{N}(1≤ai≤1091 \le a_{i} \le 10^{9})이 주어진다.

출력

모든 순열 PP에 대한 f(P)f(P)의 합을 109+710^{9} + 7로 나눈 나머지를 한 개의 정수로 출력한다.

힌트

같은 값이 여러 번 나올 수 있다. 같은 aa 수열을 만드는 서로 다른 순열도 각각 따로 센다.

답은 109+710^{9} + 7로 나눈 나머지로 출력한다.

예제5

  1. 예제 1

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

    입력
    1
    1
    7
    
    예상 출력
    14
    
  3. 예제 3

    입력
    4
    7 2 7 2
    3 2 1 2
    
    예상 출력
    240
    
  4. 예제 4

    입력
    7
    1 1 2 9 17 26 30
    4 4 4 4 4 4 4
    
    예상 출력
    181440
    
  5. 예제 5

    입력
    11
    257869734 -413759255 671386528 312442221 -479133479 837936940 -775252592 -785229024 -306462979 685409332 62181930
    987323333 202379759 242380132 464003610 240120482 288801746 7692451 552912477 795257073 629515685 667287542
    
    예상 출력
    862900292