Pagini recente » Cod sursa (job #2352540) | Cod sursa (job #1979354) | Cod sursa (job #2168382) | Cod sursa (job #3217924) | Cod sursa (job #2051801)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int Nmax = 100000 + 5;
int n, m, p, sol = -1, st, dr;
int a[Nmax];
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i)fin >> a[i];
fin >> m;
for(int i = 1, x; i <= m; ++i)
{
fin >> p >> x;
st = 1; dr = n; sol = -1;
if(p == 0)
{
while(st <= dr)
{
int mid = st + (dr - st)/2;
if(a[mid] < x)st = mid + 1;
else if(a[mid] > x)dr = mid -1;
else sol = mid, st = mid + 1;
}
}
else if(p == 1)
{
while(st <= dr)
{
int mid = st + (dr - st)/2;
if(a[mid] <= x)st = mid + 1, sol = mid;
else if(a[mid] > x)dr = mid - 1;
}
}
else
{
while(st <= dr)
{
int mid = st + (dr - st)/2;
if(a[mid] < x)st = mid + 1;
else if(a[mid] >= x)dr = mid - 1, sol = mid;
}
}
fout << sol << '\n';
}
return 0;
}