Cod sursa(job #2779189)

Utilizator Mihai_Ariton9Mihai Ariton Mihai_Ariton9 Data 2 octombrie 2021 20:46:27
Problema Cautare binara Scor 0
Compilator c-32 Status done
Runda Arhiva educationala Marime 1.46 kb
#include <stdio.h>
#include <stdlib.h>
int v[100001];
int main()
{
    FILE *fin, *fout;
    
    fin=fopen("cautbin.in", "r");
    fout=fopen("cautbin.out", "w");
    
    int n, x, t, m, i, s=1, mij, d;
    fscanf(fin, "%d", &n);
    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);
        if(t==0)
        {
            while(s<=d)
            {
                mij=(s+d)/2;
                if(v[mij]<=x)
                s=mij+1;
                else
                d=mij-1;
            }
            mij=(s+d)/2;
            if(v[mij]==x)
            fprintf(fout, "%d\n", mij);
            else
            fprintf(fout, "-1");
        }
        else if(t==1)
        {
            while(s<=d)
            {
                mij=(s+d)/2;
                if(v[mij]<=x)
                s=mij+1;
                else
                d=mij-1;
            }
            mij=(s+d)/2;
            fprintf(fout, "%d\n", mij);
        }
        else
        {
            while(s<=d)
            {
                mij=(s+d)/2;
                if(v[mij]<x)
                s=mij+1;
                else
                d=mij-1;
            }
            mij=(s+d)/2;
            fprintf(fout, "%d\n", mij+1);
        }
        s=1;
        d=n;
    }
    
    fclose(fin);
    fclose(fout);

    return 0;
}