Pagini recente » Cod sursa (job #1711423) | Cod sursa (job #2182861) | Cod sursa (job #2779173) | Cod sursa (job #924601) | Cod sursa (job #2082660)
#include <iostream>
#include <fstream>
using namespace std;
int n,a[100001],m,t,x;
ifstream fi("cautbin.in");
ofstream fo("cautbin.out");
void citire()
{
fi>>n;
for(int i=1; i<=n; i++)
fi>>a[i];
fi>>m;
}
int cautBinara0(int x)
{
int st,dr,mid;
dr=n;
st=1;
mid=(st+dr)/2;
while(st<=dr)
{
if(x==a[mid] && a[mid+1]!=a[mid])
return mid;
else if(x>=a[mid])
st=mid+1;
else if(x<a[mid])
dr=mid-1;
mid=(st+dr)/2;
}
return -1;
}
int cautBinara1(int x)
{
int st,dr,mid;
dr=n;
st=1;
mid=(st+dr)/2;
while(st<=dr)
{
if(x==a[mid] && a[mid+1]!=a[mid])
return mid;
else if(x>=a[mid])
st=mid+1;
else if(x<a[mid])
dr=mid-1;
mid=(st+dr)/2;
}
return st-1;
}
int cautBinara2(int x)
{
int st,dr,mid;
dr=n;
st=1;
mid=(st+dr)/2;
while(st<=dr)
{
if(x==a[mid] && a[mid-1]!=a[mid])
return mid;
else if(x>a[mid])
st=mid+1;
else if(x<=a[mid])
dr=mid-1;
mid=(st+dr)/2;
}
return st;
}
int main()
{
citire();
while(m)
{ fi>>t;
fi>>x;
if(t==0) fo<<cautBinara0(x)<<endl;
//if(t==1) fo<<cautBinara1(x)<<endl;
// if(t==2) fo<<cautBinara2(x)<<endl;
m--;
}
return 0;
}