Cod sursa(job #2884041)

Utilizator tudor10Serban Tudor Alexandru tudor10 Data 2 aprilie 2022 12:07:41
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>

using namespace std;

int n, m, i;
int req, x;
int v[100010];

int search_0(int x)
{
    int mid, st = 1, dr = n;
    int pos = -1;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]<=x) st = mid+1;
        if(v[mid]>x) dr = mid-1;
        if(v[mid]==x) pos = mid;
    }
    return pos;
}

int search_1(int x)
{
    int mid, st = 1, dr = n;
    int pos = -1;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]<=x) st = mid+1, pos = mid;
        if(v[mid]>x) dr = mid-1;
    }
    return pos;
}

int search_2(int x)
{
    int mid, st = 1, dr = n;
    int pos = -1;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]>=x) dr = mid-1, pos = mid;
        if(v[mid]<x) st = mid+1;
    }
    return pos;
}

ifstream in("cautbin.in");
ofstream out("cautbin.out");

int main()
{
    in >> n;
    for(i=1;i<=n;i++)
    {
        in >> v[i];
    }
    in >> m;
    for(i=1;i<=m;i++)
    {
        in >> req >> x;

        if(req==0) out << search_0(x);
        if(req==1) out << search_1(x);
        if(req==2) out << search_2(x);

        out << '\n';
     }
    return 0;
}