Seqstr

Time limit: 0.45s Memory limit: 512MB Input: seqstr.in Output: seqstr.out

Se dau două șiruri, AA și BB, cu valori din mulțimea {0,1}\{0, 1\}.

Cerință

  1. Să se afle numărul de subsecvențe distincte din BB care sunt subșiruri în AA.
  2. Să se afle, pentru o subsecvență BpqB_{p \dots q}, numărul de subșiruri din AA egale cu aceasta.
  3. Să se afle numărul de subșiruri din AA care sunt subsecvențe în BB.

Date de intrare

Pe prima linie a fișierului seqstr.in se află nn reprezentând lungimea șirului AA. Pe linia a doua se află cele nn elemente ale șirului AA separate prin câte un spațiu. Pe linia a treia se află numărul mm reprezentând lungimea șirului BB. Pe linia a patra se află cele mm elemente ale șirului BB separate prin câte un spațiu. Pe linia a cincea se află numărul CC reprezentând cerința 11, 22 sau 33.

Dacă CC este 22 atunci pe linia a șasea se află două numere pp și qq separate printr-un spațiu.

Date de ieșire

Fișierul de ieșire seqstr.out va conține o singură linie pe care va fi scris numărul cerut, conform cerinței.

Restricții și precizări

  • Rezultatele cerute vor fi calculate și afișate modulo 109+710^9 + 7.
  • Prin subșir TT de lungime pp al lui AA se înțelege un șir At1,At2,At3,,AtpA_{t_1}, A_{t_2}, A_{t_3}, \dots, A_{t_p} determinat de pozițiile 1t1<t2<t3<<tpn1 \leq t_1 < t_2 < t_3 < \dots < t_p \leq n
  • Orice subsecvență a lui BB este determinată de două poziții 1pqm1 \leq p \leq q \leq m și este egală cu șirul Bp,Bp+1,,BqB_p, B_{p+1}, \dots, B_q. Lungimea secvenței este egală cu qp+1q - p + 1.
  • Două subsecvențe din BB, determinate respectiv de perechile de poziții (p1,q1)(p_1, q_1) și (p2,q2)(p_2, q_2) sunt distincte dacă au lungimi diferite sau dacă au lungimi egale și există kk astfel încât p1p1+kq1p_1 \leq p_1 + k \leq q_1 și p2p2+kq2p_2 \leq p_2 + k \leq q_2 și Bp1+kBp2+kB_{p_1 + k} \neq B_{p_2 + k}.
  • 1mn1 \leq m \leq n
# Punctaj Restricții
1 7 C=1C = 1 și n20n \leq 20
2 9 C=1C = 1 și 21n50021 \leq n \leq 500
3 19 C=1C = 1 și 501n5 000501 \leq n \leq 5\ 000
4 3 C=2C = 2 și n20n \leq 20
5 9 C=2C = 2 și 21n10021 \leq n \leq 100
6 15 C=2C = 2 și 101n5 000101 \leq n \leq 5\ 000
7 9 C=3C = 3 și n20n \leq 20
8 9 C=3C = 3 și 21n10021 \leq n \leq 100
9 20 C=3C = 3 și 101n500101 \leq n \leq 500

Exemplul 1

seqstr.in

5
1 1 0 0 1
3
0 1 1
1

seqstr.out

4

Explicație

Avem de rezolvat cerința 11. Subsecvențele distincte din șirul BB pentru care există subșir în AA sunt: (0)(0), (1)(1), (0,1)(0, 1) și (1,1)(1, 1). Pentru subsecvența (0,1,1)(0, 1, 1) din BB nu există subșir în AA.

Exemplul 2

seqstr.in

5
1 1 0 0 1
3
0 1 1
2
2 3

seqstr.out

3

Explicație

Avem cerința 22. Subșirurile din AA egale cu subsecvența (1,1)(1, 1) din BB sunt cele determinate de subșirurile de poziții: (1,2)(1, 2), (1,5)(1, 5) și (2,5)(2, 5).

Exemplul 3

seqstr.in

5
1 1 0 0 1
3
0 1 1
3

seqstr.out

10

Explicație

Avem cerința 33. Vor fi analizate numai subșirurile de lungime 11, 22 sau 33. Nu avem subșiruri de lungime 33 în AA egale cu subsecvențe din BB, iar din cele de lungime 11 sau 22 sunt numărate cele egale cu (0)(0), (1)(1), (0,1)(0, 1) și (1,1)(1, 1).

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