E - Desarreglos algo ordenados
Languages: C, C++, Java, Haskell, Pascal, Python, JavaScript, Tiger, C#
Time & Memory limits:
(details)
El hermano de Fito empezó este año en la carrera de Ciencias de la Computación y está muy emocionado con todas las asignaturas nuevas, especialmente Programación. En la última clase el profesor les explico varios algoritmos de ordenación para ejemplificar el uso de los ciclos. El hermano de Fito enseguida hizo todos los ejercicios de la tarea y para seguir practicando ha inventado su propio algoritmo de ordenación. Contento con su resultado se lo enseñó a su hermano para que lo revisara porque tenía duda sobre si era eficiente o no. Fito revisó el algoritmo de su hermano y se dio cuenta de que el tiempo de ejecución dependía de la cantidad de elementos que están en su posición. Un caso extremo era en el que ningún elemento está en su lugar, en ese caso el algoritmo se demoraba demasiado. Como Fito no quiere desanimar a su hermano ha decidido generar un grupo de arreglos donde los $K$ primeros elementos no estén en su posición, pero el resto puede estar en cualquier lugar. Fito quiere saber para un $K$ dado cuántos arreglos de los números del uno al $N$ puede formar cumpliendo la restricción de que los primeros $K$ no están en su posición.
Output
Se debe imprimir la cantidad de arreglos que Fito puede formar cumpliendo la condición dada módulo $1,000,000,007$.