Cod sursa(job #2498392)

Utilizator MCnitzzNita Sebastian MCnitzz Data 23 noiembrie 2019 20:55:44
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <fstream>
#define Nmax 10000


using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int  A[Nmax];
int bisort0(int inc, int sf,int k)
{
    int mid;
    while(inc<=sf)
    {
        mid=(inc+sf)/2;
        if(A[mid]<=k)
        {
            inc=mid+1;
        }else{sf=mid-1;}

    }
    mid=(inc+sf)/2;
    if(A[mid] > k)mid--;
    if(A[mid]==k)return mid;
    return -1;



}
int bisort1(int inc, int sf, int k)
{
     int mid;
    while(inc<sf)
    {
        mid=(inc+sf)/2;
        if(A[mid]<=k)
        {
            inc=mid+1;
        }else{sf=mid;}

    }
    mid=(inc+sf)/2;
    if(A[mid]>k)mid--;
    return mid;

}
int bisort2(int inc, int sf,int k)
{
     int mid;
    while(inc<sf)
    {
        mid=(inc+sf)/2;
        if(A[mid]<k)
        {
            inc=mid+1;
        }else{sf=mid;}

    }
    mid=(inc+sf)/2;
    if(A[mid]<k)mid++;
     return mid;

}

int main()
{
    int i,k,caz,N,M;
    in>>N;
    for(i=1;i<=N;i++)
        {in>>A[i];}
    in>>M;
    while(M!=0)
    {
        M--;
        in>>caz>>k;
        if(caz==0)out<<bisort0(1, N, k)<<"\n";
        if(caz==1)out<<bisort1(1, N, k)<<"\n";
        if(caz==2)out<<bisort2(1, N, k)<<"\n";

    }
    return 0;
}