Cod sursa(job #2860743)

Utilizator dolorentiuDaniel Gadalean dolorentiu Data 3 martie 2022 00:45:58
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");

int n,m,a,b,v[10010];

int caut0(int st,int dr,int x){
    int mij;
    while(st<=dr){
        mij=(st+dr)/2;
        if(v[mij]<=x)
            st=mij+1;
        else
            dr=mij-1;
    }
    mij=(st+dr)/2;
    if(v[mij]>x) mij--;
    if(v[mij]==x)
        return mij;
    return -1;
}

int caut1(int st,int dr,int x){
    int mij,n=dr;
    while(st<dr){
        mij=(st+dr)/2;
        if(v[mij]<=x)
            st=mij+1;
        else
            dr=mij;
    }
    mij=(st+dr)/2;
    if(v[mij]>x) mij--;
    return mij;
}

int caut2(int st,int dr,int x){
    int mij;
    while(st<dr){
        mij=(st+dr)/2;
        if(v[mij]<x)
            st=mij+1;
        else
            dr=mij;
    }
    mij=(st+dr)/2;
    if(v[mij]<x) mij++;
    return mij;
}

int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    f>>m;
    while(m--){
        f>>a>>b;
        if(a==0)
            g<<caut0(1,n,b)<<'\n';
        if(a==1)
            g<<caut1(1,n,b)<<'\n';
        if(a==2)
            g<<caut2(1,n,b)<<'\n';
    }
    return 0;
}