Pagini recente » Cod sursa (job #1913370) | Cod sursa (job #1785743) | Cod sursa (job #2379147) | Cod sursa (job #2642272) | Cod sursa (job #1767322)
#include<iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int n, vect[100005],m;
int bin(int st,int dr,int x)
{
int m=(st+dr)/2;
while(st!=dr)
{
if(vect[m]==x)
{
if(st==m)
{
if(vect[dr]==x)return dr;
else return st;
}
st=m;
}
if(vect[m]>x)dr=m;
if(vect[m]<x)st=m+1;
cout<<st<<' '<<dr<<'\n';
m=(st+dr)/2;
}
return st;
}
int main()
{
fin>>n;
int i,cmmandid,subject;
vect[n+1]=2147483647;
for(i=1; i<=n; ++i)
fin>>vect[i];
fin>>m;
for(i=0; i<m; ++i)
{
fin>>cmmandid>>subject;
if(cmmandid==0)
{
int x=bin(1,n,subject);
if(vect[x]==subject)fout<<x<<'\n';
else fout<<-1<<'\n';
}
if(cmmandid==1)
{
int x=bin(1,n,subject);
if(vect[x]==subject)fout<<x<<'\n';
else fout<<x-1<<'\n';
}
if(cmmandid==2)
{
int x=bin(1,n,subject-1);
if(vect[x]==subject-1)fout<<x+1<<'\n';
else fout<<x<<'\n';
}
}
return 0;
}