Pagini recente » Cod sursa (job #1458316) | Cod sursa (job #2690973) | Cod sursa (job #42848) | Borderou de evaluare (job #705087) | Cod sursa (job #2105907)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005], i, n, m, pr, ul, rs;
int cautbin_0_si_1(int p, int u, int x)
{
int mij;
while(p<u)
{
mij=(p+u)/2;
if(v[mij]<=x)
p=mij+1;
else
u=mij-1;
}
mij=(p+u)/2;
if(v[mij]>x)
--mij;
if(x==0)
{
if(v[mij]==x)
return mij;
else
return -1;
}
else
return mij;
}
int cautbin_2(int p, int u, int x)
{
int mij;
while(p<u)
{
mij=(p+u)/2;
if(v[mij]<x)
p=mij+1;
else
u=mij;
}
mij=(p+u)/2;
if(v[mij]<x)
++mij;
return mij;
}
int main()
{
in>>n;
for(i=1; i<=n; ++i)
{
in>>v[i];
}
in>>m;
for(i=1; i<=m; ++i)
{
in>>pr>>ul;
if(pr==0 || pr==1)
rs=cautbin_0_si_1(1, n, ul);
else
rs=cautbin_2(1, n, ul);
out<<rs<<"\n";
}
return 0;
}