Cod sursa(job #2650690)

Utilizator ALEXANDRU127ANDRITA ALEXANDRU ALEXANDRU127 Data 19 septembrie 2020 18:37:52
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.83 kb
#include <iostream>
#include <fstream>

using namespace std;

int n,m,a[100001];

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

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

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

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>n;
    for(int i=0;i<n;i++)
        fin>>a[i];
    fin>>m;
    for(int j=0;j<m;j++)
    {
        int x,y;
        fin>>x>>y;
        if(x==0)
        {
            int val;
            for(int i=0;i<n;i++)
            {
                val=0;
                val=cautareBinara1(0,n-1,a[i]);
            }
            fout<<val<<"\n";
        }
        if(x==1)
        {
            int val2;
            for(int i=0;i<n;i++)
            {
                val2=0;
                val2=cautareBinara2(0,n-1,a[i]);
            }
            fout<<val2<<"\n";
        }
        if(x==2)
        {
            int val3;
            for(int i=n-1;i>0;i--)
            {
                val3=0;
                val3=cautareBinara3(0,n-1,a[i]);
            }
            fout<<val3;
        }
    }
    return 0;
}