Pagini recente » Cod sursa (job #222526) | Cod sursa (job #1955837) | Cod sursa (job #2707970) | Cod sursa (job #2150341) | Cod sursa (job #2252189)
#include <fstream>
int n;
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int BinarySearch(int x,int t,int v[])
{
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<<poz<<'\n';
}
if(t==1)
{
if(gasit) fout<<poz<<'\n';
else
{
if(v[poz]<x) fout<<poz<<'\n';
else fout<<poz+1<<'\n';
}
}
}
int BinarySearch(int x,int v[])
{
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]) st=mij+1;
else dr=mij-1;
}
if(gasit) fout<<poz<<'\n';
else
{
if(v[poz]<x) fout<<poz<<'\n';
else fout<<poz-1<<'\n';
}
}
int main()
{
fin>>n;
int v[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;
if(x==2) BinarySearch(y,v);
else BinarySearch(y,x,v);
}
return 0;
}