Cod sursa(job #1247137)

Utilizator dragos_vecerdeaVecerdea Dragos dragos_vecerdea Data 22 octombrie 2014 10:11:53
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <stdio.h>
using namespace std;
FILE *fin ,*fout;
int v[100001] ,m ,n ,q ,pas=1 ,x;
int main()
{
    int i ,j;
    fin = fopen("cautbin.in" ,"r");
    fout = fopen ("cautbin.out" ,"w");
    fscanf(fin ,"%d" ,&n);
    for(i=1;i<=n;i++)
    {
        fscanf(fin ,"%d" ,&v[i]);
    }
    fscanf (fin , "%d" ,&m);
    for(j=1;j<=m;j++)
    {
        fscanf (fin ,"%d%d" ,&q ,&x);
        if(q==0)
        {
            {
                i=0;
                pas=1<<17;
                while(pas!=0)
                {
                    if(i+pas<=n && v[i+pas]<=x)i+=pas;
                    pas/=2;
                }
                if(v[i]==x)fprintf(fout ,"%d\n" ,i);
                else fprintf(fout ,"-1\n");
            }
        }
        if(q==1)
        {
            i=0;
            pas=1<<17;
            while(pas!=0)
            {
                if(i+pas<=n && v[i+pas]<=x)i+=pas;
                pas/=2;
            }
            fprintf(fout ,"%d\n" ,i);
        }
        if(q==2)
        {
            i=0;
            pas=1<<17;
            while(pas!=0)
            {
                if(i+pas<=n && v[i+pas]<x)i+=pas;
                pas/=2;
            }
            fprintf(fout ,"%d\n" ,i+1);
        }
    }
    return 0;

}