K-èsim element

Usant les definicions

    typedef vector<int> VE;
    typedef vector<VE> VVE;

implementeu una funció

    int k_esim(int k, const VVE& V);

que retorni el kk-èsim element global (començant en u) dels elements continguts en el vector de vectors @V@. Sigui n=n = @V.size()@. Cal tenir en compte que, per a tota 0i<n0 \le i < n, @V[i]@ està ordenat de petit a gran. A més, no hi ha cap element repetit en tot @V@.

Per exemple, si k=5k = 5, n=3n = 3, i els tres vectors són

V[0]

1 2 10 15

V[1]

-5 -3 12

V[2]

0 3 4 6 20

llavors la resposta és 2, que és el cinquè element més petit de tots els vectors.

Sigui m=0n1m = \sum_0^{n-1} @V[i].size()@. Podeu suposar que kk està entre 1 i mm, que nn està entre 2 i 500, i que algun @V[i]@ pot estar buit. Si us cal, podeu implementar procediments auxiliars. Tingueu en compte que, en els jocs de proves “grossos”, k=Θ(n)k = \Theta(n) i m=Θ(n2)m = \Theta(n^2). La solució esperada en aquest cas té cost Θ(nlogn)\Theta(n \log n).

Observació

Només cal enviar el procediment demanat; el programa principal serà ignorat.

Informació del problema

Autoria: Enric Rodríguez

Generació: 2026-01-25T11:17:24.079Z

© Jutge.org, 2006–2026.
https://jutge.org