Pagini recente » Cod sursa (job #2757118) | Cod sursa (job #475104) | Cod sursa (job #30711) | Cod sursa (job #63240) | Cod sursa (job #561707)
Cod sursa(job #561707)
#include<iostream>
#include<stdio.h>
using namespace std;
int v[100],n;
int caut1 (int x, int st, int dr)
{ int mij = (st + dr )/2;
if( dr < st) return -1;
if( dr == st )
if( v[ st ] == x ) return st;
else return -1;
if( dr == st + 1 )
{
if( v[ dr ] == x ) return dr;
if( v[ st ] == x ) return st;
return -1;
}
if (x == v[mij])return caut1( x, mij, dr);
if (x > v[mij])return caut1(x, mij + 1, dr);
if( x < v[ mij ])return caut1( x, st, mij-1);
}
int caut2 (int x, int st, int dr)
{ int mij = ( st + dr )/2;
if( st == dr ) return st;
if( st == dr - 1)
if( v[ dr ] <= x ) return dr;
else return st;
if (x >= v[mij])return caut2( x, mij, dr);
if( x < v[ mij ])return caut2( x, st, mij - 1);
}
int caut3 (int x, int st, int dr)
{ int mij = ( st + dr )/2;
if(st == dr) return st;
if ( x <= v[mij]) return caut3 (x, st , mij );
if ( x > v[mij] ) return caut3 (x, mij+1 , dr );
}
int main()
{ int i,x;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
cin>>n;
for (i=1;i<=n;++i)
scanf("%d",&v[i]);
int meniu,nr;
cin>>nr;
for(i=1;i<=nr;i++)
{
cin>>meniu;
cin>>x;
if(meniu==0)cout<<caut1(x,1,n)<<endl;
if(meniu==1)cout<<caut2(x,1,n)<<endl;
if(meniu==2)cout<<caut3(x,1,n)<<endl;
//cout<<caut3(x,1,n)<<endl;
}
}