Pagini recente » Cod sursa (job #551832) | Cod sursa (job #883301) | Cod sursa (job #1074650) | Cod sursa (job #1307281) | Cod sursa (job #2498503)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m, v[100001], i, cerinta, x;
int binary0(int x)
{
int st=1, dr=n, mij;
while(st <= dr)
{
mij = (st+dr)/2;
if(v[mij] == x && v[mij+1]!=x)
return mij;
if(v[mij] > x)
dr = mij - 1;
else
st = mij + 1;
}
return -1;
}
int binary1(int x)
{
int st=1, dr=n, mij, poz = -1;
while(st <= dr)
{
mij = (st+dr)/2;
if(v[mij] <= x)
{
poz = mij;
st = mij +1;
}
else
dr = mij -1;
}
return poz;
}
int binary2(int x)
{
int st=1, dr=n, mij, poz = -1;
while(st <= dr)
{
mij = (st+dr)/2;
if(v[mij] >= x)
{
poz = mij;
dr = mij -1;
}
else
st = mij + 1;
}
return poz;
}
int main()
{
f >> n;
for (i=1; i<=n; i++)
f >> v[i];
f >> m;
for (i=1; i<=m; i++)
{
f >> cerinta >> x;
if(cerinta == 0)
g << binary0(x) << '\n';
if(cerinta == 1)
g << binary1(x) << '\n';
if(cerinta == 2)
g << binary2(x) << '\n';
}
return 0;
}