Pagini recente » Cod sursa (job #1564595) | Cod sursa (job #2262779) | Cod sursa (job #2392753) | Cod sursa (job #2897350) | Cod sursa (job #2145930)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
#define N 100010
int v[N];
int bsearch0 (int lo, int hi, int c)
{
int m;
while (lo<=hi)
{
m=(lo+hi)/2;
if (v[m]<=c)
lo=m+1;
else hi=m-1;
}
m=(lo+hi)/2;
if (v[m]>c)
m--;
if (v[m]==c)
return m;
return -1;
}
int bsearch1 (int lo, int hi, int c)
{
int m;
while (lo<=hi)
{
m=(lo+hi)/2;
if (v[m]<c)
hi=m-1;
else lo=m+1;
}
m=(lo+hi)/2;
if (v[m]>c)
m--;
return m;
}
int bsearch2 (int lo, int hi, int c)
{
int m;
while (lo<=hi)
{
m=(lo+hi)/2;
if (v[m]<c)
lo=m+1;
else hi=m-1;
}
m=(lo+hi)/2;
if (v[m]<c)
m++;
return m;
}
int main()
{
int n, m, i, a, x;
in>>n;
for (i=1; i<=n; i++)
in>>v[i];
in>>m;
for (i=1; i<=m; i++)
{
in>>a>>x;
if (a==0)
out<<bsearch0 (1, n, x)<<'\n';
if (a==1)
out<<bsearch1 (1, n, x)<<'\n';
if (a==2)
out<<bsearch2 (1, n, x)<<'\n';
}
return 0;
}