Cod sursa(job #1596613)

Utilizator mateimacMacoveiciuc Matei mateimac Data 11 februarie 2016 11:08:22
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");


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


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

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

int main()
{
    int n,v[100000],i,j,m,x,t;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>m;
    for(j=1;j<=m;j++)
    {
        in>>t;in>>x;
        if(t==0) out<<cautbin0(n,v,x)<<'\n';
        if(t==1) out<<cautbin1(n,v,x)<<'\n';
        if(t==2) out<<cautbin2(n,v,x)<<'\n';
    }


    return 0;
}