Pagini recente » Cod sursa (job #2657640) | Cod sursa (job #2182003) | Cod sursa (job #2811439) | Cod sursa (job #2129008) | Cod sursa (job #2765340)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m, v[NMAX];
int cb0(int x)
{
int st = 1, dr = n, poz = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(v[mid] == x)
st = mid + 1, poz = mid;
else if(v[mid] > x)
dr = mid - 1;
else if(v[mid] < x)
st = mid + 1;
}
return poz;
}
int cb1(int x)
{
int st = 1, dr = n, poz = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(v[mid] <= x)
st = mid + 1, poz = mid;
else
dr = mid - 1;
}
return poz;
}
int cb2(int x)
{
int st = 1, dr = n, poz = -1;
while(st <= dr)
{
int mid = (st + dr) / 2;
if(v[mid] >= x)
dr = mid - 1, poz = mid;
else
st = mid + 1;
}
return poz;
}
int main()
{
f >> n;
for(int i = 1; i <= n; i++)
f >> v[i];
f >> m;
for(int i = 1; i <= m; i++)
{
int ops, x;
f >> ops >> x;
if(ops == 0)
g << cb0(x);
if(ops == 1)
g << cb1(x);
if(ops == 2)
g << cb2(x);
g << "\n";
}
return 0;
}