Drumuri

Time limit: 0.2s Memory limit: 64MB Input: drumuri.in Output: drumuri.out

Fie NN un număr natural şi AA un şir indexat de la 11, cu N2N^2 elemente, ce constituie o permutare a numerelor 11, 22, 33, . . . , N2N^2. Dintr-o poziţie ii, cu 1iN21 \leq i \leq N^2, ne putem deplasa în poziţia:

  • i1i − 1, dacă i1i − 1 nu se divide cu NN
  • i+1i + 1, dacă ii nu se divide cu NN
  • iNi − N , dacă iN1i-N \geq 1
  • i+Ni + N , dacă i+NN2i+N \leq N^2

Un element AiA_i se numeşte start dacă toate elementele în care ne putem deplasa din poziţia ii au valoarea mai mare decât AiA_i. Un drum este o succesiune de elemente, Ai1,Ai2,...,AikA_{i_1}, A_{i_2}, . . . , A_{i_k}, cu k1k \geq 1, astfel încât Ai1<Ai2<...<AikA_{i_1} < A_{i_2} < . . . < A_{i_k}, cu proprietatea că elementul Ai1A_{i_1} este start şi că ne putem deplasa din poziţia i1i_1 în i2i_2, din i2i_2 în i3i_3,..., din ik1i_{k-1} în iki_k.

Cerință

Să se afişeze un şir AA astfel încât numărul drumurilor să fie cât mai mic (şi să nu depăşească 10910^9), precum şi numărul drumurilor din şirul afişat.

Date de intrare

Fişierul de intrare drumuri.in conține pe prima linie numărul natural NN.

Date de ieșire

Fişierul de ieşire drumuri.out va conține pe prima linie N2N^2 numere naturale distincte cuprinse între 11 și N2N^2, separate prin câte un spațiu, reprezentând elementele şirului AA. Pe a doua linie va fi scris numărul drumurilor din şirul AA scris pe prima linie.

Restricții și precizări

  • 1N1 0001 \leq N \leq 1 \ 000
  • Numărul drumurilor din şirul AA, notat nrdrumnrdrum, trebuie să fie mai mic decât 1 000 000 0001 \ 000 \ 000 \ 000.
  • Dacă numărul drumurilor este corect determinat pentru şirul AA afişat, se acordă 40%40 \% din punctaj.
  • În plus, se acordă (nrminnrdrum)460%(\frac{nrmin}{nrdrum})^4 \cdot 60 \% din punctaj, unde nrminnrmin este numărul minim de drumuri care se poate obţine pentru o permutare a şirului 11, 22, 33, . . . , N2N^2, dacă studiem toate permutările posibile.
# Punctaj Restricții
1 45 1N161 \leq N \leq 16
2 36 17N10017 \leq N \leq 100
3 19 Fără restricții suplimentare

Exemplul 1

drumuri.in

2 

drumuri.out

1 2 3 4
5

Explicație

Pentru primul exemplu drumurile sunt (1)(1), (1,2)(1, 2), (1,2,4)(1, 2, 4), (1,3)(1, 3), (1,3,4)(1, 3, 4), iar cum 55 este numărul minim de drumuri pentru toate permutările şirului 11, 22, 33, 44, se vor acorda 100100 de puncte.

Exemplul 2

drumuri.in

2

drumuri.out

1 3 4 2
6

Explicație

Pentru al doilea exemplu drumurile sunt (1)(1), (1,3)(1, 3), (1,4)(1, 4), (2)(2), (2,3)(2, 3), (2,4)(2, 4) şi se vor acorda 40+(56)460=68.9340 + (\frac{5}{6})^4 \cdot 60 = 68.93 puncte.

Exemplul 3

drumuri.in

3

drumuri.out

7 6 9 1 3 5 4 8 2
15

Explicație

Pentru al treilea exemplu drumurile sunt (1)(1), (1,4)(1, 4), (1,4,8)(1, 4, 8), (1,3)(1, 3), (1,3,5)(1, 3, 5), (1,3,5,9)(1, 3, 5, 9), (1,3,6)(1, 3, 6), (1,3,6,7)(1, 3, 6, 7), (1,3,8)(1, 3, 8), (1,7)(1, 7), (1,3,6,9)(1, 3, 6, 9), (2)(2), (2,5)(2, 5), (2,5,9)(2, 5, 9), (2,8)(2, 8) şi se vor acorda 73.8573.85 puncte.

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