Pagini recente » Cod sursa (job #568705) | Cod sursa (job #834017) | Cod sursa (job #2589520) | Cod sursa (job #2727459) | Cod sursa (job #2619310)
#include<bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int N_MAX = 1e5;
int n;
int v[N_MAX + 2];
int cautbin(int x)
{
int st,dr,mid,poz;
st=1;
dr=n;
while(st<dr)
{
mid=(st+dr)/2;
if(v[mid]<=x)
{
st=mid+1;
poz=mid;
}
else
{
dr=mid-1;
}
}
if(v[poz]!=x)
return -1;
else
return poz;
}
int cautbinar(int x)
{
int st,dr,mid,poz;
st=1;
dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid]<x)
{
st=mid+1;
}
if(v[mid]>=x)
{
dr=mid-1;
poz=mid;
}
}
return poz;
}
int main()
{
int x,a,b,i;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in>>x;
for(i=1;i<=x;i++)
{
in>>a>>b;
if(a==0)
{
int c;
c=cautbin(b);
if(v[c]==b)
out<<c<<'\n';
else
out<<"-1"<<'\n';
}
if(a==1)
out<<cautbin(b)<<'\n';
if(a==2)
out<<cautbinar(b)<<'\n';
}
return 0;
}