Pagini recente » Monitorul de evaluare | Cod sursa (job #3194674) | Cod sursa (job #1374904) | Cod sursa (job #810273) | Cod sursa (job #1626065)
#include <bits/stdc++.h>
using namespace std;
int a[101];
int n;
void Citire()
{
int i;
ifstream fin("cautbin.in");
fin >> n;
for (i = 1; i <= n; ++i)
fin >> a[i];
fin.close();
}
/// functie care primeste un vector ordonat
/// crescator si o valoare x
/// ret. 0 daca x nu apare in vector
/// sau ret. pozitia unde apare x
int CautBin1(int x)
{
int st, dr, m;
st = 1; dr = n;
while (st <= dr)
{
m = (st + dr) / 2;
if (a[m] == x) return m;
if (a[m] < x) st = m + 1;
else dr = m - 1;
}
return 0;
}
///cauta cea mai din stanga poz. m unde
/// x <= a[m]
int CautBin2(int x)
{
int st, dr, m, poz;
st = 1; dr = n; poz = 0;
while (st <= dr)
{
m = (st + dr) / 2;
if (a[m] >= x)
{
poz = m;
dr = m - 1;
}
else st = m + 1;
}
return poz;
}
///cauta cea mai din dreapta poz. m unde
/// a[m] <= x
int CautBin3(int x)
{
int st, dr, m, poz;
st = 1; dr = n; poz = 0;
while (st <= dr)
{
m = (st + dr) / 2;
if (a[m] <= x)
{
poz = m;
st = m + 1;
}
else dr = m - 1;
}
return poz;
}
int main()
{
Citire();
cout << CautBin3(17);
return 0;
}