Cod sursa(job #1397213)

Utilizator paul.dogioiuPaul Dogioiu paul.dogioiu Data 23 martie 2015 12:45:58
Problema Cautare binara Scor 60
Compilator c Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>
#include <stdlib.h>

long long v[100000];

int main()
{
    FILE *in, *out;
    int N, M, i, j, a, x, pas;

    in=fopen("cautbin.in", "r");
    fscanf(in, "%d", &N);

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

    out=fopen("cautbin.out", "w");
    for (i=1; i<=M; i++)
    {
        fscanf(in, "%d%d", &a, &x);
        j=0;
        pas=1<<16;
        if (a<2)
        {
            while (pas!=0)
            {
                if (j+pas<=N && v[j+pas]<=x)
                    j+=pas;
                pas/=2;
            }
            if (a==0 && v[j]!=x)
                fprintf(out, "-1\n");
            else
                fprintf(out, "%d\n", j);
        }
        else
        {
            while (pas!=0)
            {
                if (j+pas<=N && v[j+pas]<x)
                    j+=pas;
                pas/=2;
            }
            fprintf(out, "%d\n", j+1);

        }
    }
    fclose(in);
    fclose(out);
    return 0;
}