Pagini recente » Cod sursa (job #2543286) | Cod sursa (job #2181971) | Cod sursa (job #111923) | Cod sursa (job #3189027) | Cod sursa (job #1591945)
#include <fstream>
using namespace std;
ofstream out("cautbin.out");
int n,m,i,var,x,v[100005],num;
int caut0(int x)
{
int pasi,k;
pasi=1<<16;
for(k = 0 ; pasi ; pasi >>= 1)
if(k + pasi <= n && v[k+pasi] <= x)
k += pasi;
if(v[k] == x)
return k;
return -1;
}
int caut1(int x)
{
int pasi,k;
pasi=1<<16;
for(k = 0 ; pasi ; pasi >>= 1)
if(k + pasi <= n && v[k+pasi] <= x)
k += pasi;
return k;
}
int caut2(int x)
{
int pasi,k;
pasi=1<<16;
for(k = 0 ; pasi ; pasi >>= 1)
if(k + pasi <= n && v[k+pasi] < x)
k += pasi;
return k+1;
}
int main()
{
freopen("cautbin.in","r",stdin);
scanf("%d",&n);
for(i = 1 ; i <= n ; i ++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(i = 1 ; i <= m ; i++)
{
scanf("%d%d",&var,&x);
if(var==0)
out<<caut0(x)<<'\n';
if(var==1)
out<<caut1(x)<<'\n';
if(var==2)
out<<caut2(x)<<'\n';
}
return 0;
}