TOPIC
Wrong Answer 30% - C++
mtemer asked 6 years ago
Pessoal, poderiam me ajudar a achar o erro? Ele passou nos 3 casos de teste do enunciado e nos casos de teste que criei aqui. Obrigado ^^
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
int buscaBinaria(vector<int> V, int elem);
int main()
{
while (true){
vector <int> vet1,vet2;
int sz1,sz2,i;
cin >> sz1 >> sz2;
if (sz1+sz2 == 0) break;
int elem;
for (i=0;i<sz1;i++){
cin >> elem;
vet1.push_back(elem);
}
for (i=0;i<sz2;i++){
cin >> elem;
vet2.push_back(elem);
}
int j = 0,cont=0;
for (i=0;i<vet1.size();){
if (vet1[i]!=vet1[i-1]){
if (buscaBinaria(vet2,vet1[i])==-1){
while(j<vet2.size()){
if (vet2[j]!=vet2[j-1]){
if (buscaBinaria(vet1,vet2[j])==-1){
cont++;
if (i!=j)i = j; else i = j+1;
j++;
break;
}
}j++;
}
}
else i++;
} else i++;
if (j>=vet2.size()) break;
}
cout << cont << endl;
}
return 0;
}
int buscaBinaria(vector<int> V, int elem){
int i, inicio, meio, final;
inicio = 0;
int N = V.size();
final = N-1;
while(inicio <= final){
meio = (inicio + final)/2;
if(elem < V[meio])
final = meio-1;//busca na metade da esquerda
else
if(elem > V[meio])
inicio = meio+1;//busca na metade da direita
else
return meio;
}
return -1;//elemento não encontrado
}