Mai intai trebuie sa te autentifici.
Cod sursa(job #1152624)
Utilizator | Data | 24 martie 2014 20:56:36 | |
---|---|---|---|
Problema | Cautare binara | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.8 kb |
#include <cstdio>
#include <algorithm>
#define MAX 100100
int v[MAX];
using namespace std;
int main()
{
int poz,i,nr,n,op,x;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)scanf("%d",v+i);
sort(v+1,v+n+1);
scanf("%d",&nr);
for(i=1;i<=nr;++i)
{
scanf("%d%d",&op,&x);
if(op==0){
poz=upper_bound(v+1,v+n+1,x)-v-1;
if(poz>=1 and poz<=n and v[poz]==x)printf("%d\n",poz);
else printf("-1\n");
}
if(op==1){
poz=lower_bound(v+1,v+n+1,x+1)-v-1;
printf("%d\n",poz);
}
if(op==2){
poz=lower_bound(v+1,v+n+1,x-1)-v;
printf("%d\n",poz);
}
}
return 0;
}