Pagini recente » Cod sursa (job #2778410) | Cod sursa (job #2354251) | Cod sursa (job #1543829) | Cod sursa (job #237422) | Cod sursa (job #2482755)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int n , m , v[100005];
int cautare(int st, int dr ,int x)
{
int mid;
while(st <= dr)
{
mid=( st + dr )/2;
if(v[mid] <= x)
st = mid + 1;
else
dr = mid - 1;
}
if(v[dr] == x)
return dr;
return -1;
}
int cautare1(int st, int dr ,int x)
{
int mid;
while(st <= dr)
{
mid=( st + dr )/2;
if(v[mid] <= x)
st = mid + 1;
else
dr = mid - 1;
}
return dr;
}
int cautare2(int st, int dr ,int x)
{
int mid;
while(st < dr)
{
mid=( st + dr )/2;
if(v[mid] >= x)
dr = mid - 1;
else
st = mid + 1;
}
return st;
}
int main()
{
f >> n;
for( int i=1 ; i<=n ; i++ )
f >> v[i];
f >> m;
int p, x;
while(m--)
{
f >> p >> x;
if(p == 0)
g << cautare(1,n,x) << "\n";
if(p == 1)
g << cautare1(1,n,x) << "\n";
if(p == 2)
g << cautare2(1,n,x) << "\n";
}
return 0;
}