Cod sursa(job #1827010)

Utilizator AlinGabi15Alin Dita AlinGabi15 Data 11 decembrie 2016 12:37:17
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001],i,nr,x,m,mid,sol,n,q,st,dr;
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    fin>>m;
    while(m>0){
        m--;
        fin>>q>>x;
        if(q==0){
            st=1;dr=n;sol=-1;
            while(st<=dr){
                mid=(st+dr)/2;
                if(x==v[mid]){
                    while(mid<=n&&x==v[mid])
                        mid++;
                        sol=mid-1;
                    break;
                }
            else
               if(x<v[mid])
                    dr=mid-1;
               else
                st=mid-1;
            }

        fout<<sol<<'\n';
        continue;}
        if(q==1){
            st=1;dr=n;sol=-1;
            while(st<=dr){
                mid=(st+dr)/2;
                if(x<v[mid])
                    dr=mid-1;
            else
               if(x>=v[mid]){
                    sol=mid;
                    st=mid+1;}

            }

        fout<<sol<<'\n';
        continue;}
        if(q==2){
            st=1;dr=n;sol=-1;
            while(st<=dr){
                mid=(st+dr)/2;
                if(x>v[mid])
                    st=mid+1;
            else
               if(x<=v[mid]){
                    sol=mid;
                    dr=mid-1;}

            }

        fout<<sol<<'\n';
        continue;}
    }
    return 0;
}