Solução
Para esse problema também temos uma solução simples:
- Ordenar a lista e para cada elemento de fazer buscan binária nos elementos de . Para isso podemos usar upper_bound do C++ ou fazer nossa própria busca binária.
Código para melhor entendimento:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# solucao de zeze deaugusto | |
#include <iostream> | |
#include <algorithm> | |
#include <vector> | |
#include <cstdlib> | |
using namespace std; | |
int main(void) | |
{ | |
long long tama, tamb; | |
cin >> tama; | |
cin >> tamb; | |
vector<long long> a; | |
vector<long long> b; | |
long long i, in; | |
for(i=0; i < tama; i++) // lendo os numeros do vetor a | |
{ | |
cin >> in; | |
a.push_back(in); | |
} | |
for(i=0; i < tamb; i++) // lendo os numeros do vetor b | |
{ | |
cin >> in; | |
b.push_back(in); | |
} | |
sort(a.begin(), a.end()); // ordenando para fazer busca binária | |
for(i=0; i < b.size(); i++) | |
{ | |
cout << upper_bound(a.begin(), a.end(), b[i]) - a.begin() << endl; | |
/*printando a posição relativa do limitante superior, que vai me dar o numero de elementos menor ou igual a b[i]*/ | |
} | |
return 0; | |
} |