Rezolvare BAC Informatica 2009 – Varianta 76 – Subiectul al III-lea problema 4

Mai jos puteti gasi rezolvarea problemei 4 de la subiectul III din varianta 76 pentru examenul de bacalaureat din anul 2009


#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream f("BAC.TXT");
int n,m,v[1000],i;
f>>n>>m;
for (i = 0; i < n; i++)
f>>v[i];
for (i = 0; i < m; i++) {
int a;
f>>a;
//facem cautare binara in v
int stanga = 0, dreapta = n - 1;
while (stanga <= dreapta) {
//see overhead
int mij = stanga + (dreapta - stanga) / 2;
if (v[mij] == a) {
cout<<a<<" ";
break;
} else if (v[mij] > a)
dreapta = mij - 1;
else
stanga = mij + 1;
}
}
return 0;
}

Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 🙂

2 Replies to “Rezolvare BAC Informatica 2009 – Varianta 76 – Subiectul al III-lea problema 4”

  1. O metoda putin mai usoara, poate nu chiar la fel de eficienta.

    int main()
    {
    fstream f(“bac.txt”);
    int n,m,a[100],b[100],i,j;
    f>>n>>m;
    for(i=1;i>a[i];
    for(j=1;j>b[j];
    for(i=1;i<=n;i++)
    {
    for(j=1;j<=m;j++)
    if(a[i]==b[j])
    cout<<a[i]<<" ";
    }
    }

    Reply

  2. Tot iti va scadea puncte la eficienta, din pacate. Algoritmul prezentat pe site are complexitatea O(m*log2(n)).

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *