Antrenament

Time limit: 1s Memory limit: 64MB Input: antrenament.in Output: antrenament.out

Cerință

Gigi este antrenor de fotbal și astăzi vrea să organizeze diferit antrenamentul. Până acum toți jucătorii se antrenau împreună, dar astăzi vrea să îi împartă pe grupe. Gigi are la echipă NN fotbaliști, fiecare având un rating ce reprezintă cât de talentat este: a1a_1, a2a_2, a3a_3, \dots, aNa_N. Gigi vrea să organizeze antrenamentul astfel: vrea să îi împartă în MM grupe, reprezentate de MM subsecvențe consecutive în șirul aa. Fiecare grupă are asociat un rating. Șirul ratingurilor grupelor este strict crescător. Ratingul unei grupe este definit de cel mai slab rating al jucătorilor din grupa respectivă.

Exemplu

Dacă jucătorii au ratingurile 12,10,20,20,25,3012, 10, 20, 20, 25, 30 și grupele au ratingurile 10,20,3010, 20, 30, putem face următoarele două partiții:

  • 12,1012, 10 | 20,20,2520, 20, 25 | 3030;
  • 12,10,2012, 10, 20 | 20,2520, 25 | 3030.

Cunoscând numărul de fotbaliști, numărul de grupe, ratingurile fotbaliștilor și ratingurile asociate grupelor, se cere să îl ajutați pe Gigi să calculeze câte astfel de repartizări poate să creeze. Deoarece există foarte multe variante, afișați răspunsul modulo 1e9+71e9 + 7.

Date de intrare

Pe prima linie a fișierului de intrare antrenament.in se găsesc numerele NN (numărul de fotbaliști) si MM (numărul de grupe).
A doua linie conține NN numere: a1a_1, a2a_2, a3a_3, \dots, aNa_N. (ratingurile fotbaliștilor).
A treia linie conține MM numere sortate crescător: b1b_1, b2b_2, b3b_3, \dots, bMb_M (ratingurile grupelor).

Date de ieșire

Pe prima linie a fișierului de ieșire antrenament.out se va găsi un singur număr ce reprezintă numărul de modalități de a împărți fotbaliștii în grupe.

Restricții și precizări

  • Pentru 20%20\% din teste N,M10N, M \leq 10;
  • N,M200 000N, M \leq 200 \ 000;
  • Ratingurile jucătorilor 1 000 000 000\leq 1 \ 000 \ 000 \ 000;
  • Ratingurile echipelor 1 000 000 000\leq 1 \ 000 \ 000 \ 000;
  • Șirul ratingurilor grupelor este ordonat crescător;
  • Fiecare jucător aparține unei singure grupe.

Exemplul 1

antrenament.in

6 3
12 10 20 20 25 30
10 20 30

antrenament.out

2

Exemplul 2

antrenament.in

7 2
1 2 2 2 2 2 2
1 2

antrenament.out

6

Log in or sign up to be able to send submissions!