Pagini recente » Cod sursa (job #2858724) | Cod sursa (job #362787) | Cod sursa (job #1853240) | Cod sursa (job #2483530) | Cod sursa (job #1072828)
#include <iostream>
#include <stdio.h>
#define Nmax 100000
using namespace std;
unsigned v[Nmax],n;
unsigned cautare_binara(unsigned x,unsigned mod,unsigned low,unsigned high)
{
unsigned m = low/2 + high/2;
if(low==high || v[m]==x)
{
if(mod==0)
{
if(v[m]==x)
{
while(v[m]==x)
{
m++;
}
return --m;
}
else
{
return -1;
}
}
else if(mod==1)
{
while(v[m]>x)
{
m--;
}
while(v[m]==x)
{
m++;
}
return --m;
}
else if(mod==2)
{
while(v[m]<x)
{
m++;
}
while(v[m]==x)
{
m--;
}
return ++m;
}
}
else
{
if(v[m]>x)
{
cautare_binara(x,mod,low,m);
}
else if(v[m]<x)
{
cautare_binara(x,mod,low,m);
}
}
return -1;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
unsigned i,nr,a,b;
scanf("%u",&n);
for(i=1;i<=n;i++)
scanf("%u",&v[i]);
scanf("%u",&nr);
for(i=1;i<=nr;i++)
{
scanf("%u %u",&a,&b);
printf("%d\n",cautare_binara(b,a,1,n));
}
return 0;
}