Pagini recente » Cod sursa (job #1933299) | Cod sursa (job #2625131) | Cod sursa (job #1660315) | Cod sursa (job #573191) | Cod sursa (job #1160994)
#include <fstream>
using namespace std;
ifstream f("cautbin.in") ;
ofstream g("cautbin.out") ;
int v[100001],k,n ;
int cautare0(int k)
{
int p,u,i,mij ;
p=1 ;
u=n ;
while(p<=u)
{
mij=p+(u-p)/2 ;
if(v[mij]<=k)
p=mij+1 ;
else
u=mij-1 ;
}
mij=p+(u-p)/2 ;
if(v[mij]>k)
mij-- ;
if(v[mij]==k)
return mij ;
return -1 ;
}
int cautare1(int k)
{
int p,u,i,mij ;
p=1 ;
u=n ;
while(p<u)
{
mij=p+(u-p)/2 ;
if(v[mij]<=k)
p=mij+1 ;
else
u=mij ;
}
mij=p+(u-p)/2 ;
if(v[mij]>k)
mij-- ;
return mij ;
}
int cautare2(int k)
{
int p,u,i,mij ;
p=1 ;
u=n ;
while(p<u)
{
mij=p+(u-p)/2 ;
if(v[mij]<k)
p=mij+1 ;
else
u=mij ;
}
mij=p+(u-p)/2 ;
if(v[mij]<k)
mij++ ;
return mij ;
}
int main()
{
int i,a,m ;
f>>n ;
for(i=1;i<=n;i++)
f>>v[i] ;
f>>m ;
for(i=1;i<=m;i++)
{
f>>a>>k ;
if(a==0)
g<<cautare0(k)<<"\n" ;
if(a==1)
g<<cautare1(k)<<"\n" ;
if(a==2)
g<<cautare2(k)<<"\n" ;
}
return 0;
}