Cromatic

Time limit: 1s Memory limit: 256MB Input: cromatic.in Output: cromatic.out

Fie a=(a1,a2,,an)a = (a_1, a_2, \dots, a_n) un șir de nn numere întregi. Pentru fiecare k{1,2,,n}k \in \{1,2,\dots,n\}, definim mink=min{a1,a2,,ak}min_k=\min\{a_1, a_2, \dots ,a_k\} și maxk=max{a1,a2,,ak}max_k=\max\{a_1, a_2, \dots ,a_k\}. Astfel, asociem șirului aa un alt șir de intervale închise minmax=([min1,max1],[min2,max2],,[minn,maxn])minmax = ([min_1, max_1], [min_2, max_2], \dots, [min_n, max_n]).

Vom spune că șirul aa este un șir cromatic dacă și numai dacă elementele șirului minmaxminmax sunt distincte două câte două, adică nu există două intervale identice în șir.

De exemplu, dacă a=(7,4,9)a = (7, 4, 9), atunci șirul minmaxminmax este ([7,7],[4,7],[4,9])\Bigl([7,7], [4,7], [4,9]\Bigr). Cum nu există 22 intervale identice în minmaxminmax, șirul aa este cromatic. În schimb, dacă a=(4,9,7)a=(4,9,7), atunci șirul minmaxminmax este ([4,4],[4,9],[4,9])\Bigl([4,4], [4,9], [4,9]\Bigr). Intervalul [4,9][4, 9] se repetă, deci șirul aa nu este cromatic.

Considerăm toate șirurile cromatice distincte ce se pot forma prin rearanjarea elementelor șirului aa și le ordonăm lexicografic. Notăm cu NSCNSC numărul de șiruri astfel obținute. De exemplu, dintre cele 6 permutări ale șirului a=(7,4,9)a = (7,4,9), numai NSC=4NSC = 4 sunt cromatice:

  1. (4,7,9)(4, 7, 9);
  2. (7,4,9)(7, 4, 9);
  3. (7,9,4)(7, 9, 4);
  4. (9,7,4)(9, 7, 4).

Cerință

Dându-se un șir aa, nu neapărat cromatic, să se determine:

  1. Numărul de șiruri cromatice NSCNSC ce se pot forma prin rearanjarea elementelor șirului aa. Întrucât acest număr poate fi foarte mare, se cere NSCNSC modulo 1 000 000 0071 \ 000 \ 000 \ 007.
  2. Știind că șirul aa este cromatic, să se determine poziția p{1,2,,NSC}p\in\left\{1,2,\dots,\textit{NSC}\right\} a șirului aa în lista ordonată lexicografic a tuturor permutărilor cromatice ale lui aa.
  3. Dat fiind q{1,2,,NSC}q\in\left\{1,2,\dots,NSC\right\}, să se determine cel de-al qq-lea șir cromatic în ordine lexicografică ce se poate obține prin rearanjarea elementelor șirului aa.

Date de intrare

Fișierul de intrare cromatic.in conține pe prima linie un număr natural c{1,2,3}c\in\left\{1,2,3\right\}, reprezentând numărul cerinței de rezolvat:

  1. Dacă c=1c = 1, pe linia a doua vom avea un număr natural nn, iar pe linia a treia vom avea nn numere naturale separate prin spații, reprezentând un șir nu neapărat cromatic.
  2. Dacă c=2c = 2, pe linia a doua vom avea un număr natural nn, iar pe linia a treia vom avea nn numere naturale separate prin spații, reprezentând un șir cromatic.
  3. Dacă c=3c = 3, linia a doua va conține numerele nn și pp separate prin spații, iar linia a treia va conține nn numere distincte separate prin spații, reprezentând un șir nu neapărat cromatic.

Date de ieșire

Fișierul de ieșire cromatic.out trebuie să conțină o singură linie, pe care se va afișa, în funcție de numărul cerinței de rezolvat:

  1. Dacă cc = 11, numărul natural NSCNSC modulo 1 000 000 0071 \ 000 \ 000 \ 007;
  2. Dacă cc = 22, numărul natural pp, ce reprezintă poziția șirului aa în lista ordonată lexicografic a tuturor șirurilor cromatice obținute prin rearanjarea elementelor șirului citit;
  3. Dacă cc = 33, un șir de nn numere naturale, separate prin spații, ce reprezintă cel de-al qq-lea șir cromatic în ordine lexicografică care se poate obține prin rearanjarea elementelor șirului aa.

Restricții și precizări

  • 2n300 0002 \leq n \leq 300 \ 000
  • 1 000 000 000ai1 000 000 000-1 \ 000 \ 000 \ 000 \leq a_i \leq 1 \ 000 \ 000 \ 000
  • 1p,q1 000 000 0001 \leq p, q \leq 1 \ 000 \ 000 \ 000
  • p,q{1,2,,NSC}p,q\in\bigl\{1,2,\dots,\textit{NSC}\}
# Punctaj Restricții
1 9 c=1,n20c = 1, n \leq 20
2 7 c=1,21n300 000c = 1, 21 \leq n \leq 300 \ 000
3 10 c=2,1pnc = 2, 1\leq p \leq n
4 10 c=2,NSCpnc = 2, \textit{NSC} - p \leq n
5 10 c=2,n20c = 2, n \leq 20
6 12 c=2,21n300 000c=2, 21 \leq n \leq 300 \ 000
7 10 c=3,1qnc=3, 1 \leq q \leq n
8 10 c=3,NSCqnc=3, \textit{NSC} - q \leq n
9 10 c=3,n20c=3, n \leq 20
10 12 c=3,21n300 000c=3, 21 \leq n \leq 300 \ 000

Exemplul 1

cromatic.in

1
4
1 5 3 8

cromatic.out

8

Explicație

Avem 8 șiruri cromatice distincte:

  1. 1 3 5 81 \ 3 \ 5 \ 8
  2. 3 1 5 83 \ 1 \ 5 \ 8
  3. 3 5 1 83 \ 5 \ 1 \ 8
  4. 3 5 8 13 \ 5 \ 8 \ 1
  5. 5 3 1 85 \ 3 \ 1 \ 8
  6. 5 3 8 15 \ 3 \ 8 \ 1
  7. 5 8 3 15 \ 8 \ 3 \ 1
  8. 8 5 3 18 \ 5 \ 3 \ 1

Exemplul 2

cromatic.in

2
4
5 3 1 8

cromatic.out

5

Explicație

În lista ordonată lexicografic, șirul citit se găsește pe poziția 55.

Exemplul 3

cromatic.in

3
4 7
5 3 1 8

cromatic.out

5 8 3 1

Explicație

A 77-a soluție în ordine lexicografică este 5 8 3 15 \ 8 \ 3 \ 1.

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