Potències de permutacions X39049


Statement
 

pdf   zip

Donada una nn, una permutació de {0,1,n1}\{0, 1, \ldots n-1\} és una seqüència on apareix cadascun dels nombres 0,1,n10, 1, \ldots n-1 exactament una vegada. Per exemple, si n=3n = 3, les seqüències (120)(1\ 2\ 0), (201)(2\ 0\ 1) i (012)(0\ 1\ 2) són permutacions de {0,1,2}\{0, 1, 2\}.

Donades dues permutacions σ=(σ0,,σn1)\sigma = (\sigma_{0}, \ldots, \sigma_{n-1}) i τ=(τ0,,τn1)\tau = (\tau_{0}, \ldots, \tau_{n-1}) de {0\{0, 11, n1\ldots n-1 }\}, el seu producte στ\sigma \circ \tau es defineix com la permutació ρ=(ρ0,,ρn1)\rho = (\rho_{0}, \ldots, \rho_{n-1}) tal que ρi=στi\rho_{i} = \sigma_{\tau_{i}}. Per exemple, si n=3n = 3, σ=(120)\sigma = (1\ 2\ 0) i τ=(201)\tau = (2\ 0\ 1), llavors στ=(012)\sigma \circ \tau = (0\ 1\ 2), perquè:

  • τ0=2\tau_{0} = 2 i σ2=0\sigma_{2} = 0,

  • τ1=0\tau_{1} = 0 i σ0=1\sigma_{0} = 1, i

  • τ2=1\tau_{2} = 1 i σ1=2\sigma_{1} = 2.

Feu un programa que, donada una permutació σ\sigma i un natural kk, calculi la potència de σ\sigma elevada a kk: σk=σσk)\sigma^k = \overbrace{\sigma \circ \ldots \circ \sigma}^{k)}. Per conveni, σ0=(0,1,,n1)\sigma^{0} = (0, 1, \ldots, n-1).

Entrada

L’entrada inclou diversos casos. Cada cas consisteix en el nombre nn (1n1041 \leq n \leq 10^{4}), seguit de nn nombres entre 11 i nn que descriuen la permutació σ\sigma, seguit del nombre kk (0k1090 \leq k \leq 10^9).

Sortida

Escriviu la permutació σk\sigma^k.

Observació

La solució esperada per a aquest problema té cost O(nlogk)O(n \cdot \log k). Les solucions que tinguin un cost Ω(nk)\Omega(n \cdot k) podran aconseguir com a molt 33 punts sobre 1010.

Podeu afegir unes (poques) línies de comentaris explicant què intenteu fer.

Si us cal, podeu fer servir que el producte de permutacions és associatiu.

Public test cases
  • Input

    3
    1 2 0
    0
    
    3
    1 2 0
    2
    
    4
    0 2 3 1
    1
    
    10
    4 3 7 8 0 5 2 1 6 9
    5
    

    Output

    0 1 2
    2 0 1
    0 2 3 1
    4 7 6 1 0 5 8 2 3 9
    
  • Information
    Author
    Enric Rodríguez
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++