Pagini recente » Cod sursa (job #2099502) | Cod sursa (job #755969) | Cod sursa (job #72469) | Cod sursa (job #1708089) | Cod sursa (job #2077925)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int nx=100002;
int n,op,x,m;
int v[nx];
int search0 (int x)
{
int st=1, dr=n, poz=-1, m;
while(st<=dr)
{
m=(st+dr)/2;
if(v[m]>x) dr=m-1;
else if(v[m]<x) st=m+1;
else if(v[m]==x)
{
poz=m;
st=m+1;
}
}
return poz;
}
int search1 (int x)
{
int st=1, dr=n, poz=-1, m;
while(st<=dr)
{
m=(st+dr)/2;
if(v[m]>x) dr=m-1;
else if(v[m]<=x)
{
poz=m;
st=m+1;
}
}
return poz;
}
int search2 (int x)
{
int st=1, dr=n, poz=-1, m;
while(st<=dr)
{
m=(st+dr)/2;
if(v[m]<x) st=m+1;
else if(v[m]>=x)
{
poz=m;
dr=m-1;
}
}
return poz;
}
int main()
{
in>>n;
for(int i=1; i<=n; i++)
in>>v[i];
in>>m;
for(;m;m--)
{
in>>op>>x;
switch(op)
{
case 0:
out<<search0(x)<<'\n';
break;
case 1:
out<<search1(x)<<'\n';
break;
case 2:
out<<search2(x)<<'\n';
break;
}
}
return 0;
}