Cod sursa(job #2067503)

Utilizator ioana.jianuIoana Jianu ioana.jianu Data 16 noiembrie 2017 15:42:04
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int v[100001];
int main(){

    FILE  *fin,*fout;
    fin=fopen("cautbin.in","r");
    fout=fopen("cautbin.out","w");

    int n,x,i,t,pas,m,r;

    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",&t,&x);
        pas=1<<16;
        r=0;
        if(t==0){
            while(pas!=0){
                if(r+pas<=n&&v[r+pas]<=x)
                    r+=pas;
                pas/=2;
            }
            if(v[r]==x)
                fprintf(fout,"%d\n",r);
            else
                fprintf(fout,"-1\n");
        }
        if(t==1){
            while(pas!=0){
                if(r+pas<=n&&v[r+pas]<=x)
                    r+=pas;
                pas/=2;
            }
            fprintf(fout,"%d\n",r);
        }
        if(t==2){
            while(pas!=0){
                if(r+pas<=n&&v[r+pas]<x)
                    r+=pas;
                pas/=2;
            }
            fprintf(fout,"%d\n",r+1);
        }
    }

    fclose(fin);
    fclose(fout);

    return 0;
}