Cod sursa(job #2500409)

Utilizator luliusBratu Iulian lulius Data 27 noiembrie 2019 20:38:23
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.43 kb
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int V[100001],N;

int var1(int x)
{
    int p=-1,s,d,m;
    s=0;d=N-1;
    while(s<=d)
    {
        m=(s+d)/2;
        if(V[m]<x)
            s=m+1;
        else if(V[m]>x)
            d=m-1;
        else
        {
            s=m+1;p=m+1;
        }
    }
    return p;
}

int var2(int x)
{
    int p=-1,s,d,m;
    s=0;d=N-1;
    while(s<=d)
    {
        m=(s+d)/2;
        if(V[m]<x)
        {
            s=m+1;p=m+1;
        }

        else if(V[m]>x)
            d=m-1;
        else
        {
            p=m+1;s=m+1;
        }
    }
    return p;
}

int var3(int x)
{
    int p=-1,s,d,m;
    s=0;d=N-1;
    while(s<=d)
    {
        m=(s+d)/2;
        if(V[m]<x)
        {
            s=m+1;
        }
        else if(V[m]>x)
        {
            d=m-1;
            p=m+1;
        }
        else
        {
            p=m+1;
            d=m-1;
        }
    }
    return p;
}

int main()
{
    int M,t,x;
    in>>N;
    for(int i=0;i<N;++i)
        in>>V[i];
    in>>M;
    for(int i=1;i<=M;++i)
    {
        in>>t>>x;
        switch(t)
        {
        case 0:
            out<<var1(x)<<'\n';
            break;
        case 1:
            out<<var2(x)<<'\n';
            break;
        case 2:
            out<<var3(x)<<'\n';
        }
    }
    return 0;
}