Mai intai trebuie sa te autentifici.
Cod sursa(job #935099)
Utilizator | Data | 1 aprilie 2013 16:48:30 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.86 kb |
#include <stdio.h>
int nri,x,v[100010];
int cautbin(int in,int sf)
{
int med,poz=-1;
while(in<=sf)
{
med=(in+sf)/2;
if(nri==0)
{
if(v[med]==x) poz=med;
if(v[med]<=x) in=med+1;
else sf=med-1;
if(v[med]==x) poz=med;
}
if(nri==1)
{
if(v[med]<=x) {in=med+1;poz=med;}
else sf=med-1;
}
if(nri==2)
{
if(v[med]>=x) {sf=med-1;poz=med;}
else in=med+1;
}
}
return poz+1;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int i,n,m;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&nri,&x);
printf("%d\n",cautbin(1,n));
}
}