Cod sursa(job #2801197)

Utilizator Maftei_DavidMaftei David Andrei Maftei_David Data 15 noiembrie 2021 14:32:54
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>

using namespace std;
ifstream a ("cautbin.in");
ofstream b ("cautbin.out");
int n,i,v[100010],m,c,x;
void citire (int n,int v[])
{
    for (i=1;i<=n;i++)
    {
        a>>v[i];
    }
}
int c0 (int x,int n)
{
    int dr,st,poz=0,m;
    dr=n;
    st=1;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if(v[m]<=x)
        {
            st=m+1;
            if (v[m]==x)poz=m;
        }
        else dr=m-1;
    }
    if (poz==0)return -1;
    return poz;
}
int c1(int x,int n)
{
    int dr,st,poz=0,m;
    dr=n;
    st=1;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if(v[m]<=x){poz=m;st=m+1;}
        else dr=m-1;
    }
    return poz;
}
int c2(int x,int n)
{
    int dr,st,poz=0,m;
    dr=n;
    st=1;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if(v[m]<x)st=m+1;
        else {poz=m;dr=m-1;}
    }
    return poz;
}
int main()
{
    a>>n;
    citire(n,v);
    a>>m;
    for (i=1;i<=m;i++)
    {
        a>>c>>x;
        if (c==0)b<<c0(x,n)<<endl;
        if (c==1)b<<c1(x,n)<<endl;
        if (c==2)b<<c2(x,n)<<endl;
    }
    return 0;
}