Pagini recente » Cod sursa (job #1056191) | Cod sursa (job #1299358) | Cod sursa (job #1627491) | Cod sursa (job #2337220) | Cod sursa (job #2252188)
#include <fstream>
int n,v[100001];
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int BinarySearch(int x,int t)
{
int st=0,dr=n-1,gasit=0,mij,poz;
while(st<=dr && !gasit)
{
mij=(st+dr)/2;
if(x==v[mij] && x!=v[mij+1]) {gasit=1; poz=mij+1;}
else if(x<v[mij]) dr=mij-1;
else st=mij+1;
}
if(t==0)
{
if(!gasit) fout<<-1<<'\n';
else fout<<mij<<'\n';
}
if(t==1)
{
if(gasit) fout<<poz<<'\n';
else
{
if(v[poz]<x) fout<<poz<<'\n';
else fout<<poz+1<<'\n';
}
}
if(t==2)
{
if(gasit) fout<<poz<<'\n';
else
{
if(v[poz]>x) fout<<poz<<'\n';
else fout<<poz-1<<'\n';
}
}
}
int main()
{
fin>>n;
for(int i=0;i<n;i++) fin>>v[i];
int m,x,y;
fin>>m;
for(int i=1;i<=m;i++)
{
fin>>x>>y;
BinarySearch(y,x);
}
return 0;
}