cartonase

Time limit: 0.03s Memory limit: 32MB Input: cartonase.in Output: cartonase.outPoints by default: 10p

Ionel are NN cartonașe. Fiecare cartonaș are înscrise două numere (un număr, ss, în partea stângă, și celălalt număr, dd, în partea dreaptă). El a așezat cartonașele într-un șir, lipite unul de celălalt, astfel încât numărul din partea dreaptă a primului cartonaș este lipit de numărul din partea stângă a celui de-al doilea cartonaș, numărul din partea dreaptă a celui de al doilea cartonaș este lipit de numărul din partea stângă a celui de-al treilea cartonaș etc. Spunem că două cartonașe alăturate "se potrivesc" dacă numărul din dreapta al primului cartonaș este egal cu numărul din stânga al celui de al doilea cartonaș. Ionel observă că sunt perechi de cartonașe alăturate care "se potrivesc" și chiar secvențe de mai multe cartonașe alăturate, în care primul "se potrivește" cu al doilea, al doilea "se potrivește" cu al treilea, etc.

Cerință

Scrieţi un program care să citească numărul NN de cartonașe, numerele înscrise pe fiecare cartonaș și determină:

  1. Numărul de perechi de cartonașe care "se potrivesc".
  2. Numărul de cartonașe din cea mai lungă secvență în care fiecare două cartonașe alăturate "se potrivesc".
  3. Numărul de secvențe cu număr maxim de cartonașe care "se potrivesc".

Date de intrare

Fişierul de intrare cartonase.in conţine doar numere naturale nenule:

  • pe prima linie se găsește numărul CC care poate avea doar valorile 11, 22 sau 33 și reprezintă cerința care urmează a fi rezolvată. Pe a doua linie a fișierului se găsește numărul natural NN, cu semnificația din enunț.
  • pe fiecare dintre următoarele NN linii se află, în acestă ordine, câte două numere naturale ss şi dd, separate printr-un spațiu, cu semnificația din enunț pentru un cartonaș. Perechile de numere sunt date în ordinea în care cartonașele corespunzătoare lor apar în șirul lui Ionel.

Date de ieșire

Fişierul de ieşire cartonase.out va conţine pe prima linie un număr natural reprezentând răspunsul la cerința specificată.

Restricții și precizări

  • 1N5001 \leq N \leq 500
  • 1s10 0001 \leq s \leq 10\ 000
  • 1d10 0001 \leq d \leq 10\ 000
  • Pentru rezolvarea fiecărei cerințe se obțin câte 30 de puncte.

Exemplul 1

cartonase.in

1
5
2 10
10 5
10 2
2 10
37 5

cartonase.out

2

Explicație

Rezolvăm prima cerință.
Sunt 22 perechi de cartonașe alăturate care "se potrivesc":

  • primul cu al doilea: (2,10)(2, 10) și (10,5)(10, 5);
  • al treilea cu al patrulea: (10,2)(10, 2) și (2,10)(2, 10).

Exemplul 2

cartonase.in

2
5
2 10
10 5
5 2
2 10
37 5

cartonase.out

4

Explicație

Rezolvăm a doua cerință.
Primele patru cartonașe formează o secvență în care fiecare două cartonașe alăturate "se potrivesc":

  • primul cartonaș cu al doilea: (2,10)(2, 10) și (10,5)(10, 5);
  • al doilea cartonaș cu al treilea: (10,5)(10, 5) și (5,2)(5, 2);
  • al treilea cartonaș cu al patrulea: (5,2)(5, 2) și (2,10)(2, 10).

Exemplul 3

cartonase.in

3
6
2 10
10 5
2 8
6 2
2 10
37 5

cartonase.out

2

Explicație

Rezolvăm a treia cerință.
Sunt maximum două cartonașe alăturate care "se potrivesc".
În fișier există două secvențe de câte două cartonașe care "se potrivesc": primul cu al doilea cartonaș și al patrulea cu al cincilea cartonaș.

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