Pagini recente » Cod sursa (job #1012168) | Cod sursa (job #1650350) | Cod sursa (job #858145) | Cod sursa (job #2054600) | Cod sursa (job #1999112)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NLIM = 1e5+10;
int n, m;
int x[NLIM];
int bins0(int a, int l, int r)
{
if(l == r && x[l] != a)
return -2;
if(l == r && x[l] == a)
{
return l;
}
int mid = (l + r) / 2 + 1;
if(x[mid] > a)
return bins0(a, l, mid - 1);
else
return bins0(a, mid, r);
}
int bins1(int a, int l, int r)
{
if(l == r)
{
return l;
}
int mid = (l + r) / 2 + 1;
if(x[mid] > a)
return bins1(a, l, mid - 1);
else
return bins1(a, mid, r);
}
int bins2(int a, int l, int r)
{
if(l == r)
{
return l;
}
int mid = (l + r) / 2;
if(x[mid] < a)
return bins2(a, mid + 1, r);
else
return bins2(a, l, mid);
}
int main()
{
fin >> n;
for(int i = 0; i < n; ++i)
fin >> x[i];
fin >> m;
int v, a;
while(m--)
{
fin >> v >> a;
if(v == 0)
fout << bins0(a, 0, n-1) + 1 << "\n";
else if(v == 1)
fout << bins1(a, 0, n-1) + 1 << "\n";
else if(v == 2)
fout << bins2(a, 0, n-1) + 1 << "\n";
}
return 0;
}