Cod sursa(job #2614253)

Utilizator Razvank206Dumitriu Razvan Razvank206 Data 11 mai 2020 15:36:58
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
float N,M;
int val,v[100],problema;
int rez1(int s, int d, int val)
{
    int mijl;
    mijl=(s+d)/2;
    if(val>=v[mijl])
    {
        s=mijl+1;
        return rez1(s,d,val);
    }
    d=mijl-1;
    mijl=(s+d)/2;
    if(v[mijl] > val)
        --mijl;
    if(v[mijl]==val)
        return mijl;
    return -1;

}

int rez2(int s,int d,int val)
{
    int mijl;
    mijl=(s+d)/2;
    if(val>=v[mijl])
    {
        s=mijl+1;
        return rez1(s,d,val);
    }
    d=mijl;
    mijl=(s+d)/2;
    if(v[mijl] > val)
        --mijl;
    return mijl;

}

int rez3(int s, int d, int val)
{
    int mijl;

    mijl=(s+d)/2;
    if(val>v[mijl])
    {
        s=mijl+1;
        return rez1(s,d,val);
    }
    d=mijl;
    mijl=(s+d)/2;
    if(v[mijl] > val)
        ++mijl;
    return mijl;
}

int main()
{
    int i;
    f>>N;
    for(i=1; i<=N; i++)
        f>>v[i];
    f>>M;
    for(i=1; i<=M; i++)
    {
        f>>problema>>val;
        if(problema==1)
            g<<rez1(1,N,val)<<endl;
        else if(problema==2)
            g<<rez2(1,N,val)<<endl;
        else if(problema==3)
            g<<rez3(1,N,val)<<endl;
    }




    return 0;
}