Cod sursa(job #2021613)

Utilizator dumitrescu_andreiDumitrescu Andrei dumitrescu_andrei Data 14 septembrie 2017 00:20:12
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda asdf1 Marime 1.23 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,m,a[100010];

int cauta1(int x)
{
    int i=1,j=n,mid;

    while(i<=j)
    {
        mid=(i+j)/2;

        if(a[mid]<=x)
            i=mid+1;
        else
            j=mid-1;
    }
    mid=(i+j)/2;
    if(a[mid]>x) mid--;
    if(a[mid]==x)
        return mid;
    else
        return -1;

}

int cauta2(int x)
{
    int i=1,j=n,mid;

    while(i<=j)
    {
        mid=(i+j)/2;

        if(a[mid]<=x)
            i=mid+1;
        else
            j=mid-1;
    }
    mid=(i+j)/2;
    if(a[mid]>x) mid--;
        return mid;


}

int cauta3(int x)
{
    int i=1,j=n,mid;

    while(i<=j)
    {
        mid=(i+j)/2;

        if(a[mid]<x)
            i=mid+1;
        else
            j=mid-1;
    }
    mid=(i+j)/2;
    if(a[mid]<x) mid++;
        return mid;
}


int main()
{
    f>>n;
    for(int i=1;i<=n;++i)
        f>>a[i];
    f>>m;
    for(int i=1;i<=m;++i)
    {
        int x,y;
        f>>x>>y;
        if(x==0)
            g<<cauta1(y)<<'\n';
        else if(x==1)
            g<<cauta2(y)<<'\n';
        else
            g<<cauta3(y)<<'\n';
    }
}