Cerința
Se dă un vector x
cu n
elemente numere naturale, și un vector y
cu m
elemente, de asemenea numere naturale. Folosind metoda Divide et Impera, verificați pentru fiecare element al vectorului y
dacă apare în x
.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi cele n
elemente ale vectorului x
. Apoi și citește m
și cele m
elemente ale lui y
.
Date de ieșire
Programul va afișa pe ecran m
valori 0
sau 1
, separate prin exact un spațiu. A j
-a valoare afișată este 1
, dacă al j
-lea element al șirului y
apare în x
, respectiv 0
în caz contrar.
Restricții și precizări
1 ≤ n,m ≤ 1000
- elementele celor doi vectori vor fi mai mici decât
1.000.000.000
Exemplu
Intrare
7 9 6 5 14 2 1 10 8 8 14 9 14 16 15 4 2
Ieșire
0 1 1 1 0 0 0 1
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema CautareDivImp:
# include <iostream>
using namespace std;
int n, x[1005], m, y[1005];
void quick(int st, int dr, int v[])
{
if(st < dr)
{
int i = st, j = dr, d = 0;
while(i < j)
{
if(v[i] > v[j])
{
int aux = v[i];
v[i] = v[j];
v[j] = aux;
d = 1-d;
}
if(d == 0)
j--;
else
i++;
}
int k = i;
quick(st, k-1, v);
quick(k+1, dr, v);
}
}
int caut(int st, int dr, int v[], int x)
{
if(st > dr)
return 0;
else
{
int m = (st + dr)/2;
if(v[m] == x)
return m;
if(v[m] > x)
return caut(1, m-1, v, x);
if(v[m] < x)
return caut(m+1, dr, v, x);
return 0;
}
}
void citire(int &n, int v[])
{
cin>>n;
for(int i = 1; i <= n ; i++)
cin>>v[i];
}
int main()
{
citire(n, x);
citire(m, y);
quick(1, n, x);
for(int i=1; i<=m; i++)
if((caut(1, n, x, y[i])))
cout<<1<<" ";
else
cout<<0<<" ";
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1154 CautareDivImp
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1154 CautareDivImp de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!