Problem:
Score : 700 points

Problem Statement

Snuke has a permutation (P_0,P_1,\cdots,P_{N-1}) of (0,1,\cdots,N-1).

Now, he will perform the following operation exactly once:

Choose K consecutive elements in P and sort them in ascending order.

Find the number of permutations that can be produced as P after the operation.

Constraints

2 \leq N \leq 200000

2 \leq K \leq N

0 \leq P_i \leq N-1

P_0,P_1,\cdots,P_{N-1} are all different.

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K
P_0 P_1 \cdots P_{N-1}

Output

Print the number of permutations that can be produced as P after the operation.

Sample Input 1

5 3
0 2 1 4 3

Sample Output 1

2

Two permutations can be produced as P after the operation: (0,1,2,4,3) and (0,2,1,3,4).

Sample Input 2

4 4
0 1 2 3

Sample Output 2

1

Sample Input 3

10 4
2 0 1 3 7 5 4 6 8 9

Sample Output 3

6

Solution in JavaScript (node.js v5.12) (judge verdict: Time Limit Exceeded)

"use strict"

const arg_str = require('fs').readFileSync('/dev/stdin', 'UTF-8')
const arg = arg_str.split('\n')
const arg_1 = arg[0].split(' ')
const P_array = arg[1].split(' ')

const N = parseInt(arg_1[0])
const K = parseInt(arg_1[1])

let result = []
let count = 0

const p = new Array(P_array.length - K + 1).fill(0)
p.map(function(num, index) {
     if(index + K > P_array.length) return

  const a_1 = P_array.slice(0, index)
    const a_2 = P_array.slice(index, index + K).sort((a,b)=>a>b)
    const a_3 = P_array.slice(index + K)
    const P = a_1.concat(a_2).concat(a_3)
    const P_str = P.join('')

    if(result.indexOf(P_str) < 0){
        result.push(P_str)
    }
    count++
});

console.log(Object.keys(result).length)