L’última posició

Disposem d’una llista ordenada de nn nombres x0,x1,,xn1x_0, x_1,\ldots, x_{n - 1} i d’un nombre zz tal que x0z<xn1x_0 \le z < x_{n - 1}. Es demana una funció effi_last_pos amb un codi molt eficient que calculi l’última posició ii tal que xizx_i \le z. La funció ha d’estar convenientment documentada i s’ha d’utilitzar per completar el següent programa.

#include <iostream>
#include <vector>
using namespace std;


///////////////////////////////////////////
//
// documentation and code of effi_last_pos 
// function must be here
//
///////////////////////////////////////////


//gets vector v from input chanel
void read_vector(vector<int>& v) {
    int n = v.size();
    for (int i = 0; i < n; ++i) cin >> v[i];
}


int main() {
    int n;
    cin >> n;
    vector<int> v(n);
    read_vector(v);
    int z;
    while (cin >> z)
        cout << effi_last_pos(v, z) << endl;
}

Punts examen: 1.750000 Part automàtica: 40.000000%

Entrada

L’entrada té tres parts. En la primera apareix un nombre enter nn més gran que un. Després hi ha una llista de nn enters ordenats de menor a major x0,x1,,xn1x_0, x_1, \ldots, x_{n - 1}. Finalment, trobem una seqüència de nombres enters. Cada número zz de l’última seqüència és tal que x0zx_0 \le z i z<xn1z < x_{n-1}.

Sortida

Per a cada nombre zz de la seqüència, una línia amb l’última posició ii on el valor de la llista xix_i no superi a zz, és a dir xizx_i \le z.

Observació

Les implementacions de la funció effi_last_pos que puguin tenir un temps d’execució proporcional a nn seran invalidades.

Informació del problema

Autoria: Pro1

Generació: 2026-01-25T15:09:01.284Z

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