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
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
#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 
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]<<" ";
}
}
Tot iti va scadea puncte la eficienta, din pacate. Algoritmul prezentat pe site are complexitatea O(m*log2(n)).