Pagini recente » Cod sursa (job #2978893) | Cod sursa (job #3260177) | Cod sursa (job #2427885) | Cod sursa (job #2560661) | Cod sursa (job #1553093)
#include<iostream>
#include<fstream>
using namespace std;
int n,x,y,v[100001],m,a;
int caut0 (int s, int d)
{
if(s>d)
return -1;
else
{
m =(s+d)/2;
if (x==v[m] && v[m+1]>v[m]){
return m+1;
}
if (x<v[m])
return caut0(s,m-1);
if (x>v[m] || v[m+1]<=v[m])
return caut0(m+1,d);
}
}
int caut1 (int s, int d)
{
if(s>d){
return -1;
}
else
{
m =(s+d)/2;
if (x>=v[m] && v[m+1]>v[m]){
return m+1;
}
if (x<v[m])
return caut1(s,m-1);
if (x>v[m] || v[m+1]<=v[m])
return caut1(m+1,d);
}
}
int caut2 (int s, int d)
{
if(s>d){
return -1;
}
else
{
m =(s+d)/2;
if (x<=v[m] && v[m]>v[m-1]){
return m+1;
}
if (x<v[m] || v[m]<=v[m-1])
return caut2(s,m-1);
if (x>v[m])
return caut2(m+1,d);
}
}
ifstream in("cautbin.in");
ofstream out("cautbin.out");
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){
out<<caut0 (0,n-1)<<'\n';
}
if(y==1){
out<<caut1 (0,n-1)<<'\n';
}
if(y==2){
out<<caut2 (0,n-1)<<'\n';
}
}
return 0;
}