LIS

Time limit: 1s Memory limit: 256MB Input: Output:

Cerință

Alec Sdima pregătește o problemă pentru Stelele Informaticii. El dorește să construiască o permutare care să aibă un număr foarte specific de subșiruri crescătoare de lungime maximă.

\\[0.25cm]

O permutare de lungime NN este o secvență P[0],…,P[N−1]P[0], \ldots, P[N - 1] în care fiecare număr de la 11 la NN apare exact o singură dată.

\\[0.25cm]

Un subșir al lui PP este o secvență P[i0],P[i1],…,P[ik−1]P[i_0], P[i_1], \ldots, P[i_{k-1}], unde 0≤i0<i1<…<ik−1<N0 \leq i_0 < i_1 < \ldots < i_{k-1} < N.

\\[0.25cm]

Un subșir este crescător dacă P[i0]<P[i1]<…<P[ik−1]P[i_0] < P[i_1] < \ldots < P[i_{k-1}]. Un cel mai lung subșir crescător (LIS) este un subșir crescător de lungime maximă.

\\[0.25cm]

Alec alege un număr KK. Trebuie să determini o permutare PP care să aibă exact KK cele mai lungi subșiruri crescătoare distincte. Două cele mai lungi subșiruri crescătoare sunt considerate distincte dacă folosesc mulțimi diferite de indici. Lungimea permutării determinate trebuie să fie de cel mult
100 000100 \ 000.

Date de intrare

Prima linie conține TT, numărul de test case-uri.

\\[0.25cm]

Următoarele TT linii conțin câte un număr KK, reprezentând numărul necesar de cele mai lungi subșiruri crescătoare.

Date de ieșire

Pentru fiecare test case, afișați două linii.

\\[0.25cm]

Prima linie trebuie să conțină NN, lungimea permutării determinate.

\\[0.25cm]

A doua linie trebuie să conțină o permutare P[0],P[1],…,P[N−1]P[0], P[1], \ldots, P[N - 1] a numerelor de la 11 la NN.

Exemplu

Date de intrare

3
1
4
6

Date de ieșire

1
1
4
2 1 4 3
5
2 1 5 4 3

Pentru al treilea test case, să considerăm permutarea [2,1,5,4,3][2, 1, 5, 4, 3].

\\[0.25cm]

Cele 6 cele mai lungi subșiruri crescătoare sunt:

[2,5],[2,4],[2,3],[1,5],[1,4],[1,3].[2, 5], [2, 4], [2, 3], [1, 5], [1, 4], [1, 3].

Restricții și precizări

  • T≤10T \leq 10
  • 1≤K≤10181 \leq K \leq 10^{18}
Subtask Scor Restricții
1 10 KK este o putere a lui 22
2 30 1≤K≤1051 \leq K \leq 10^{5}
3 60 1≤K≤10181 \leq K \leq 10^{18}

Dacă secvența afișată nu are exact KK cele mai lungi subșiruri crescătoare sau dacă lungimea secvenței depășește 10510^5, punctajul obținut pentru testul respectiv va fi 00.

Subtask 1 (10 puncte)

Vei primi 10 puncte dacă lungimea secvenței tale este de cel mult 120120, respectiv 00 puncte în caz contrar.

Subtask 2 (30 de puncte)

Fie LL lungimea secvenței determinate de tine.

\\[0.25cm]

Dacă L≤41L \leq 41, vei primi punctajul maxim. În caz contrar, punctajul obținut pentru acest subtask este determinat de următoarea formulă:

11+(max⁡(0,log⁡2(L41))8)5/4\frac{1}{1 + \left(\frac{\max \left(0, \log_2 \left(\frac{L}{41}\right)\right)}{8}\right)^{5/4}}

Subtask 3 (60 de puncte)

Fie LL lungimea secvenței determinate de tine și fie

x=log⁡2(L148).x = \log_2 \left(\frac{L}{148}\right).

Dacă L≤148L \leq 148, vei primi punctajul maxim. În caz contrar, punctajul obținut pentru acest subtask este determinat de următoarea formulă:

11+2x5x+1+(x6)2\frac{1}{1+\frac{2x}{5x+1}+\left(\frac{x}{6}\right)^2}

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