K-èsim element P63584


Statement
 

pdf   zip   main.cc

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.

Information
Author
Enric Rodríguez
Language
Catalan
Other languages
English
Official solutions
C++
User solutions
C++