Problem:


Problem E: Graph Making

Problem

どの頂点とも連結でないn個の頂点がある。

各頂点間に無向辺を張っていく。

直径がdになるようにしたとき、最大何本の辺を張ることができるか求めよ。

直径とは、2つの頂点間の最短距離のうち最大のものを表す。

ここで、最短距離は頂点間を移動するために必要な辺の数の最小値である。

多重辺、自己ループは認めない。

Input

n d

1行に2つの整数nとdが空白区切りで与えられる。

Constraints

    
2 ≤ n ≤ 109

    
1 ≤ d ≤ n&minus;1

Output

張ることができる最大の辺の数を1行に出力せよ。

Sample Input 1

4 3

Sample Output 1

3

Sample Input 2

5 1

Sample Output 2

10

Sample Input 3

4 2

Sample Output 3

5



Sample input:
4 3


Sample output:
3

Submission status: Accepted

Solution code:
# AOJ 1591 Graph Making
# Python3 2018.7.13 bal4u

n, d = map(int, input().split())
if d == 1: print(n*(n-1)//2)
else: print((n-1)+(n-d-1)*n-((n-d-1)*(n+d-2)//2))

Submission status: Accepted

Solution code:
# AOJ 1591 Graph Making
# Python3 2018.7.13 bal4u
 
n, d = map(int, input().split())
if d == 1: print(n*(n-1)//2)
else: print((n-1)+(n-d-1)*n-((n-d-1)*(n+d-2)//2))