Pagini recente » Cod sursa (job #1559770) | Cod sursa (job #1268650) | Cod sursa (job #2189671) | Cod sursa (job #3241575) | Cod sursa (job #2515501)
#include <bits/stdc++.h>
#define NMAX 32000
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[NMAX],n;
int cautaSt(int st,int dr,int val)
{
if(st == dr)return st;
else
{
int mid = st + (dr - st)/2;
if(v[mid] >= val)return cautaSt(st,mid,val);
else /* v[mid] < val */ return cautaSt(mid+1,dr,val);
}
}
int cautaDr(int st,int dr,int val)
{
if(st > dr)return st-1;
else
{
int mid = st + (dr - st)/2;
if(v[mid] <= val)return cautaDr(mid+1,dr,val);
else /*v[mid] > val */ return cautaDr(st,mid-1,val);
}
}
int main()
{
f >> n;
for(int i=1;i<=n;++i)f>> v[i];
int m,t,x;
f >> m;
while(m--)
{
f >> t >> x;
switch(t)
{
case 0 :
{
int poz = cautaDr(1,n,x);
if(v[poz] == x)
g << poz << '\n';
else
g << -1 << '\n';
}
break;
case 1 : g << cautaDr(1,n,x) << '\n';
break;
case 2 : g << cautaSt(1,n,x) << '\n';
}
}
return 0;
}