reversez

Time limit: 0.12s Memory limit: 128MB Input: reversez.in Output: reversez.out

Considerăm un alfabet cu Σ\Sigma caractere. Notam lcp(S,P)lcp(S, P) = cel mai lung prefix comun dintre un string SS și un string PP. Pentru un string SS o să notăm SuffixS[i]SuffixS[i] = sufixul stringului SS care începe la poziția ii. Având stringul SS, o să creăm șirul A[i]=lcp(S,SuffixS[i])A[i] = lcp(S, SuffixS[i]).

Cerință

Cunoscând șirul AA și lungimea alfabetului Σ\Sigma, să determine câte stringuri SS generează șirul AA.

Date de intrare

Pe prima linie a fișierului de intrare reversez.in se vor afla doua numere naturale NN și Σ\Sigma, cu semnificația din enunț. Pe linia 22 se vor afla NN numere naturale reprezentând șirul AA.

Date de ieșire

În fișierul de ieșire reversez.out veți afișa un singur număr natural reprezentând numărul de stringuri SS cerut, modulo 666 013666 \ 013.

Restricții și precizări

  • 1N300 000 1 \leq N \leq 300 \ 000;
  • 1Σ100 000 1 \leq \Sigma \leq 100 \ 000;
  • Numărul de soluții va fi cel puțin 11.

Exemplu

reversez.in

4 3
4 1 0 1

reversez.out

6

Explicație

Dacă Σ=1,2,3\Sigma={1,2,3}, cele 66 stringuri SS posibile sunt:
1121, 1131, 2212, 2232, 3313, 3323

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