Pagini recente » Cod sursa (job #549806) | Cod sursa (job #2654477) | Cod sursa (job #20949) | Cod sursa (job #1701671) | Cod sursa (job #2550012)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
const int N = 1e5 + 10;
int n, m;
int x[N];
int bin0 (int k, int l, int r)
{
if(l == r && x[l] != k)
return -2;
if(l == r && x[l] == k)
return l;
int mid = (l + r) / 2 + 1;
if(x[mid] > k)
return bin0(k, l, mid-1);
else
return bin0(k, mid, r);
}
int bin1 (int k, int l, int r)
{
if(l == r)
{
return l;
}
int mid = (l + r) / 2 + 1;
if(x[mid] > k)
return bin1(k, l, mid-1);
else
return bin1(k, mid, r);
}
int bin2 (int k, int l, int r)
{
if(l == r)
{
return l;
}
int mid = (l + r) / 2 + 1;
if(x[mid] < k)
return bin2(k, mid, r);
else
return bin2(k, l, mid - 1);
}
int main()
{
fin >> n;
for(int i = 0; i < n; ++i) fin >> x[i];
fin >> m;
int v, k;
while(m--)
{
fin >> v >> k;
if(v == 0)
fout << bin0(k, 0, n-1) + 1 << '\n';
if(v == 1)
fout << bin1(k, 0, n-1) + 1 << '\n';
if(v == 2)
fout << bin2(k, 0, n-1) + 1 << '\n';
}
return 0;
}