Pagini recente » Cod sursa (job #3143994) | Cod sursa (job #1667233) | Cod sursa (job #659137) | Cod sursa (job #2039560) | Cod sursa (job #1021398)
#include <cstdio>
#include <iostream>
#define NMAX 100005
using namespace std;
int n, m, A[NMAX];
int cb1(int *A, int n, int val)
{
int left = -1, right = n, mid;
while (right - left > 1)
{
mid = (left + right) / 2;
if (A[mid] <= val)
left = mid;
else
right = mid;
}
if (left == -1 || A[left] != val)
return -1;
return left + 1;
}
int cb2(int *A, int n, int val)
{
int left = -1, right = n, mid;
while (right - left > 1)
{
mid = (left + right) / 2;
if (A[mid] <= val)
left = mid;
else
right = mid;
}
return left + 1;
}
int cb3(int *A, int n, int val)
{
int left = -1, right = n, mid;
while (right - left > 1)
{
mid = (left + right) / 2;
if (A[mid] < val)
left = mid;
else
right = mid;
}
return right + 1;
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
cin >> n;
int i, type, x;
for (i = 0; i < n; i++)
cin >> A[i];
cin >> m;
for (i = 0; i < m; i++)
{
cin >> type >> x;
switch (type)
{
case 0: cout << cb1(A, n, x) << "\n"; break ;
case 1: cout << cb2(A, n, x) << "\n"; break ;
case 2: cout << cb3(A, n, x) << "\n"; break ;
}
}
return 0;
}