Cod sursa(job #2538353)

Utilizator AkribischerADgabriela droc AkribischerAD Data 4 februarie 2020 18:00:00
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.77 kb
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out ("cautbin.out");
int v[100001];
int main()
{
    int n,m,i,p,x,j,st,dr,mid,mid2,contor=0;
    in>>n;
    for(i=1; i<=n; i++)
    {
        in>>v[i];
    }
    in>>m;

    for(j=1; j<=m; j++)
    {
        in>>p>>x;
        st=1;
        dr=n;
        if(p==0)
        {
            while(st<=dr && contor<n)
            {
                mid=(st+dr)/2;
                if(v[mid]>x)
                {
                    dr=mid;
                }
                else if(v[mid]<x)
                {
                    st=mid+1;
                }
                else if(v[mid]==x)
                   break;
         contor++;
            }
             while(v[mid+1]==x)
        {
            mid+=1;
        }
        if(contor==n)
            out<<-1<<'\n';
        else
         out<<mid<<'\n';
        }
        else if(p==1)
        {
            st=1;
            dr=n;
             while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]>=x)
            mid2=mid;
        if(v[mid]<x)
            st=mid+1;
        else
            dr=mid-1;
    }
    while(v[mid2+1]==x)
        mid2+=1;
             out<<mid2<<'\n';
        }
    else
    {
        st=1;
        dr=n;
 while(st<=dr && contor<n)
            {
                mid=(st+dr)/2;
                if(v[mid]>x)
                {
                    dr=mid;
                }
                else if(v[mid]<x)
                {
                    st=mid+1;
                }
                else if(v[mid]==x)
                   break;
         contor++;
            }
        while(v[mid2-1]==x)
        mid2-=1;
        out<<mid2<<'\n';
    }
    }


    return 0;
}