Cod sursa(job #2713671)

Utilizator herbertoHerbert Mohanu herberto Data 28 februarie 2021 14:23:27
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.42 kb
#include <bits/stdc++.h>
 
using namespace std;

FILE*fin=fopen("cautbin.in", "r");
FILE*fout=fopen("cautbin.out", "w");
int v[100001];
int main(){
    
    int x,st,dr,n,mij,i,sol,m,t;
    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);
        if(t==0){
            st=1;
            dr=n;
            sol=-1;
            while(st<=dr){
                mij=(st+dr)/2;
                if(v[mij]>x)
                    dr=mij-1;
                else{
                    if(v[mij]==x)
                        sol=mij;
                    st=mij+1;
                }
            }
        }
        if(t==1){
            sol=-1;
            st=1;
            dr=n;
            while(st<=dr){
                mij=(st+dr)/2;
                if(v[mij]<=x){
                    sol=mij;
                    st=mij+1;
                }
                else
                    dr=mij-1;
            }
        }
        if(t==2){
            sol=-1;
            st=1;
            dr=n;
            while(st<=dr){
                mij=(st+dr)/2;
                if(v[mij]>=x){
                    sol=mij;
                    dr=mij-1;
                }
                else
                    st=mij+1;
            }
        }
        fprintf(fout, "%d\n", sol);
    }
    return 0;
}