Pagini recente » Cod sursa (job #1917687) | Cod sursa (job #2846127) | Cod sursa (job #2515912) | Cod sursa (job #2364816) | Cod sursa (job #1553097)
#include<iostream>
#include<fstream>
using namespace std;
int n,x,y,v[100001],m,a;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
void caut0 (int s, int d)
{
if(s>d)
out<<"-1"<<'\n';
else
{
m =(s+d)/2;
if (x==v[m] && v[m+1]>v[m]){
out<<m+1<<'\n';
}
if (x<v[m])
caut0(s,m-1);
if (x>v[m] || v[m+1]<=v[m])
caut0(m+1,d);
}
}
void caut1 (int s, int d)
{
if(s>d){
out<<"-1"<<'\n';
}
else
{
m =(s+d)/2;
if (x>=v[m] && v[m+1]>v[m]){
out<<m+1<<'\n';
}
if (x<v[m])
return caut1(s,m-1);
if (x>v[m] || v[m+1]<=v[m])
return caut1(m+1,d);
}
}
void caut2 (int s, int d)
{
if(s>d){
out<<"-1"<<'\n';
}
else
{
m =(s+d)/2;
if (x<=v[m] && v[m]>v[m-1]){
out<<m+1<<'\n';
}
if (x<v[m] || v[m]<=v[m-1])
return caut2(s,m-1);
if (x>v[m])
return caut2(m+1,d);
}
}
int main()
{
in>>n;
for (int i=0;i<n;i++) //Vectorul incepe de pe pozitia 0 pana la n-1
in>>v[i];
in>>a;
for(int i = 1;i<=a;i++){
in>>y>>x;
if(y==0){
caut0 (0,n-1);
}
if(y==1){
caut1 (0,n-1);
}
if(y==2){
caut2 (0,n-1);
}
}
return 0;
}