Pagini recente » Cod sursa (job #2453728) | Cod sursa (job #3208652) | Cod sursa (job #1556930) | Cod sursa (job #2227296) | Cod sursa (job #1921418)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int a[100002],n,m,sol;
void Citire()
{
int i;
fin >> n;
for(i = 1; i <= n; i++)
fin >> a[i];
fin>>m;
}
void CautBin0(int x)
{
int st,dr,mid;
sol=0;
st=1;
dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]==x) {sol=mid; st=mid+1;}
else if(a[mid]<x) st=mid+1;
else dr=mid-1;
}
}
void CautBin1(int x)
{
int st,dr,mid;
sol=0;
st=1;
dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]==x) {sol=mid; st=mid+1;}
else if(a[mid]<x) {st=mid+1; sol=mid;}
else dr=mid-1;
}
}
void CautBin2(int x)
{
int st,dr,mid;
sol=0;
st=1;
dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]==x) {sol=mid; dr=mid-1; }
else if(a[mid]<x) {st=mid+1; sol=mid;}
else dr=mid-1;
}
}
int main()
{
int i,x,op;
Citire();
for(i=1;i<=m;i++)
{
fin >> op >> x;
if(op==0)
{
CautBin0(x);
if(sol!=0) fout<<sol<<"\n";
else fout<<-1<<"\n";
}
else if(op==1)
{
CautBin1(x);
fout<<sol<<"\n";
}
else
{
CautBin2(x);
fout<<sol<<"\n";
}
}
fout.close();
return 0;
}