Cod sursa(job #3360492)

Utilizator EricFrancuEric Tiberiu Francu EricFrancu Data 14 iulie 2026 14:11:00
Problema Cautare binara Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.49 kb
#include <stdio.h>
#define NMAX 100000

int v[NMAX];

int main(){
    FILE *fin, *fout;
    int n, m, i, c, x, st, dr, mij;

    fin = fopen ("cautbin.in", "r");
    fout = fopen ("cautbin.out", "w");
    fscanf (fin, "%d", &n);
    for (i = 0; i < n; i++)
        fscanf (fin, "%d", &v[i]);
    fscanf (fin, "%d", &m);
    for (i = 0; i < m; i++){
        fscanf (fin, "%d%d", &c, &x);
        if (c == 0){
            st = 0;
            dr = n;
            while (dr - st > 1){
                mij = (st + dr) / 2;
                if (v[mij] <= x)
                    st = mij;
                else
                    dr = mij;
            }
            if (v[st] == x)
                fprintf (fout, "%d\n", st + 1);
            else
                fprintf (fout, "-1\n");
        } else if (c == 1){
            st = 0;
            dr = n;
            while (dr - st > 1){
                mij = (st + dr) / 2;
                if (v[mij] <= x)
                    st = mij;
                else
                    dr = mij;
            }
            fprintf (fout, "%d\n", st + 1);
        } else {
            st = -1;
            dr = n - 1;
            while (dr - st > 1){
                mij = (st + dr) / 2;
                if (v[mij] < x)
                    st = mij;
                else
                    dr = mij;
            }
            fprintf (fout, "%d\n", dr + 1);
        }
    }
    fclose (fin);
    fclose (fout);

    return 0;
}