Cod sursa(job #1772900)

Utilizator DanaPalangean7A Daria Palangean DanaPalangean Data 7 octombrie 2016 10:20:46
Problema Cautare binara Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.46 kb
#include <stdio.h>
int v[100001];
int main(){
    FILE *fin, *fout;
    fin=fopen("cautbin.in", "r");
    fout=fopen("cautbin.out", "w");
    int n, m, cif, x;
    fscanf(fin,"%d", &n);
    for(i=1;i<=n;i++)
        fscanf(fin,"%d", &v[i]);
    fscanf(fin,"%d", &m);
    for(i=1;i<=m;i++){
        fscanf(fin,"%d%d", &cif, &x);
        if(cif==0){
            int st=1, dr=n;
            while(st<=dr){
            int mijl=(st+dr)/2;
            if(v[mijl]<x)
                st=mijl+1;
            else
                dr=mijl-1;
            }
            if(st<=n && v[st]==x)
                fprintf(fout,"%d\n", st);
            else
                fprintf(fout,"-1\n");
        }
        else if(cif==1){
            int st=1, dr=n;
            while(st<=dr){
            int mijl=(st+dr)/2;
            if(v[mijl]<=x)
                st=mijl+1;
            else
                dr=mijl-1;
            }
            if(dr<=n && v[dr]==x)
                fprintf(fout,"%d\n", dr);
            else
                fprintf(fout,"-1\n");
        }
        else if(cif==2){
            int st=1, dr=n;
            while(st<=dr){
            int mijl=(st+dr)/2;
            if(v[mijl]<=x)
                st=mijl+1;
            else
                dr=mijl-1;
            }
            if(st<=n && v[st]==x)
                fprintf(fout,"%d\n", st);
            else
                fprintf(fout,"-1\n");
        }
    }
    return 0;
}