Problem:
Score : 400 points

Problem Statement

We have N+1 integers: 10^{100}, 10^{100}+1, ..., 10^{100}+N.

We will choose K or more of these integers. Find the number of possible values of the sum of the chosen numbers, modulo (10^9+7).

Constraints

1 \leq N \leq 2\times 10^5

1 \leq K \leq N+1

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K

Output

Print the number of possible values of the sum, modulo (10^9+7).

Sample Input 1

3 2

Sample Output 1

10

The sum can take 10 values, as follows:

(10^{100})+(10^{100}+1)=2\times 10^{100}+1

(10^{100})+(10^{100}+2)=2\times 10^{100}+2

(10^{100})+(10^{100}+3)=(10^{100}+1)+(10^{100}+2)=2\times 10^{100}+3

(10^{100}+1)+(10^{100}+3)=2\times 10^{100}+4

(10^{100}+2)+(10^{100}+3)=2\times 10^{100}+5

(10^{100})+(10^{100}+1)+(10^{100}+2)=3\times 10^{100}+3

(10^{100})+(10^{100}+1)+(10^{100}+3)=3\times 10^{100}+4

(10^{100})+(10^{100}+2)+(10^{100}+3)=3\times 10^{100}+5

(10^{100}+1)+(10^{100}+2)+(10^{100}+3)=3\times 10^{100}+6

(10^{100})+(10^{100}+1)+(10^{100}+2)+(10^{100}+3)=4\times 10^{100}+6

Sample Input 2

200000 200001

Sample Output 2

1

We must choose all of the integers, so the sum can take just 1 value.

Sample Input 3

141421 35623

Sample Output 3

220280457

Solution in Java (OpenJDK 11.0.6) (judge verdict: Wrong Answer)

import java.util.*; 
import java.lang.*; 

public class Main{
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		int N = scan.nextInt();
                int K = scan.nextInt();
                
                int[] cnt = new int[N+2];
                int ans = 0;
                
                int[] p = new int[N+2];
                int[] q = new int[N+2];
                
                 for(int a=0; a<=K-1;a++){
                        p[K] += a;
                    }
                 for(int b=N; b>=N+1-K;b--){
                        q[K] += b;
                    }
                 
                 cnt[K] = q[K]-p[K]+1;
                 
                for(int i=K+1; i<=N+1; i++){
                      p[i] = p[i-1] + i;
                      q[i] = q[i-1] + N+2-i;
                      cnt[i] = q[i]-p[i]+1;
                }
                
                for(int i=K; i<=N+1; i++){
                ans = ans + cnt[i];
                }
                ans =  ans%(10*10*10*10*10*10*10*10*10+7);
                
                System.out.println(ans);
                
	}
}