Pagini recente » Cod sursa (job #2885486) | Cod sursa (job #1372642) | Cod sursa (job #263213) | Cod sursa (job #3291058) | Cod sursa (job #2190628)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, t,x, a[100001],i;
int cb0(int s,int d, int x)
{
int ok=-1, mij;
while(s<=d)
{
mij=(s+d)/2;
if(a[mij]==x)
{
ok=mij;
s=mij+1;
}
else if(a[mij]<x)s=mij+1;
else d=mij-1;
}
return ok;
}
int cb1(int s,int d, int x)
{
int ok=-1, mij;
while(s<=d)
{
mij=(s+d)/2;
if(a[mij]<=x)
{
ok=mij;
s=mij+1;
}
else d=mij-1;
}
return ok;
}
int cb2( int s, int d, int x)
{
int ok=-1, mij;
while(s<=d)
{
mij=(s+d)/2;
if(a[mij]>=x)
{
ok=mij;
d=mij-1;
}
else s=mij+1;
}
return ok;
}
int main()
{
fin>>n;
for(i=1; i<=n; i++)
fin>>a[i];
fin>>m;
for(i=1; i<=m; i++)
{
fin>>t>>x;
if(t==0)fout<<cb0(1,n,x)<<endl;
if(t==1)fout<<cb1(1,n,x)<<endl;
if(t==2)fout<<cb2(1,n,x)<<endl;
}
return 0;
}