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