Pagini recente » Cod sursa (job #3236082) | Cod sursa (job #1066602) | Cod sursa (job #334360) | Cod sursa (job #464491) | Cod sursa (job #1953811)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,a[100005],type,key;
int cautbin0(int st,int dr)
{
if(st>=dr)
{
if(a[st-1]==key)
return st-1;
return -1;
}
int mij=(st+dr)/2;
if(a[mij]<=key)
return cautbin0(mij+1,dr);
return cautbin0(st,mij);
}
int cautbin1(int st,int dr)
{
if(st>=dr)
return st-1;
int mij=(st+dr)/2;
if(a[mij]<=key)
return cautbin1(mij+1,dr);
return cautbin1(st,mij);
}
int cautbin2(int st,int dr)
{
if(st>=dr)
return st+1;
int mij=(st+dr)/2+1;
if(a[mij]>=key)
return cautbin2(st,mij-1);
return cautbin2(mij,dr);
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)fin>>a[i];
fin>>m;
for(int i=1;i<=m;i++)
{
fin>>type>>key;
if(type==0)
fout<<cautbin0(1,n)<<"\n";
else if(type==1)
fout<<cautbin1(1,n)<<"\n";
else fout<<cautbin2(1,n)<<"\n";
}
return 0;
}