Cod sursa(job #1133536)

Utilizator pitbull007Hurmuzache Ciprian pitbull007 Data 4 martie 2014 23:29:58
Problema Cautare binara Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.2 kb
#include <stdio.h>
#include <stdlib.h>


//method that returns the index of val. if the value val is not in the array, then this method return -1.
int binarySearch(int *v,int length,int val) {
    int i,pas;
    for(pas=1;pas<length;pas=pas<<1);
    for(i=0;pas;pas=pas>>1) {
        if(i+pas < length && v[i+pas] <= val)
            i=i+pas;
    }
    if(v[i] == val)
        return i;
    return -1;
}

int binarySearch1(int *v,int length,int val) {
    int i,pas,ok=0,j;
    for(pas=1;pas<length;pas=pas<<1);
    for(i=0;pas ;pas=pas>>1) {
    j=i+pas;
        if(j < length && v[j] <= val) {
            i+=pas;
        }
    }
    return j;
}

int v[100001];
int main() {
    FILE *fin,*fout;
    fin=fopen("cautbin.in","r");
    fout=fopen("cautbin.out","w");

    int index,select,i,N,M,option;

    fscanf(fin,"%d",&N);
    for(i=0;i<N;i++)
        fscanf(fin,"%d",&v[i]);
    fscanf(fin,"%d",&M);

    for(i=0;i<M;i++) {
        fscanf(fin,"%d%d",&option,&select);
        if(option == 0) {
         index = binarySearch(v,N,select);
         fprintf(fout,"%d\n",index);
        }
        if(option == 1) {
         index = binarySearch1(v,N,select);
         fprintf(fout,"%d\n",index);
        }
    }



    return 0;
}