Cod sursa(job #1938487)

Utilizator BiancaMariaVulsanVulsan Bianca Maria BiancaMariaVulsan Data 24 martie 2017 20:40:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.71 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int st,dr,mij,i,ok;
int intrebare0(int v[100001], int n, int x)
{
    st=1; dr=n; ok=0;
    while(st<=dr && ok==0)
    {
        mij=st+(dr-st)/2;
        if(v[mij]==x)
            {while(v[mij]==x)
              mij++;
              mij=mij-1;
             ok=1;}
        if(v[mij]<x)
            st=mij+1;
        if(v[mij]>x)
            dr=mij-1;
    }
    if(ok==1)
        return mij;
    return -1;
}
int intrebare1(int v[100001],int n,int x)
{
       st=1; dr=n; ok=0;
    while(st<=dr && ok==0)
    {
        mij=st+(dr-st)/2;
        if(v[mij]==x)
            {while(v[mij]==x)
              mij++;
              mij=mij-1;
             ok=1;}
        if(v[mij]<x)
            st=mij+1;
        if(v[mij]>x)
            dr=mij-1;
    }
    if(ok==1)
        return mij;
        return dr;
}
int intrebare2(int v[100001],int n,int x)
{
       st=1; dr=n; ok=0;
    while(st<=dr && ok==0)
    {
        mij=st+(dr-st)/2;
        if(v[mij]==x)
            {while(v[mij]==x)
              mij--;
              mij=mij+1;
             ok=1;}
        if(v[mij]<x)
            st=mij+1;
        if(v[mij]>x)
            dr=mij-1;
    }
    if(ok==1)
        return mij;
        return st;
}
int main()
{
    int n,m,v[100001],nr,x;
    f>>n;
    for(i=1; i<=n; i++)
       f>>v[i];
    f>>m;
    for(i=1; i<=m; i++)
    {
        f>>nr>>x;
        if(nr==0)
            g<<intrebare0(v,n,x);
        if(nr==1)
            g<<intrebare1(v,n,x);
        if(nr==2)
            g<<intrebare2(v,n,x);
    }
    f.close();
    g.close();
    return 0;
}