Cod sursa(job #1244756)

Utilizator FayedStratulat Alexandru Fayed Data 18 octombrie 2014 03:55:03
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <cstdio>
#include <algorithm>
#define NMAX 100000
using namespace std;

int n,m;
int V[NMAX];

void read(){

   freopen("cautbin.in","r",stdin);
   freopen("cautbin.out","w",stdout);
   scanf("%d",&n);
   for(register int i=1;i<=n;++i)
            scanf("%d",&V[i]);
}

int main(){

    int cod,val;
    int index = 0;
    sort(V+1,V+1+n);
    read();
    scanf("%d",&m);
    for(register int i=1;i<=m;++i){

        scanf("%d%d",&cod,&val);
            if(cod == 0){
                index = upper_bound(V+1,V+1+n,val) - V -1;
                if(V[index] == val)
                    printf("%d\n",index);
                else printf("-1\n");
            }
            else if(cod == 1){
                index = lower_bound(V+1,V+1+n,val+1) - V -1;
                printf("%d\n",index);
            }
            else{
                index = upper_bound(V+1,V+1+n,val-1) - V;
                printf("%d\n",index);
            }
    }
return 0;
}