Cod sursa(job #1284079)

Utilizator Johnny07Savu Ioan-Daniel Johnny07 Data 6 decembrie 2014 10:54:23
Problema Cautare binara Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int i,j,k,ls,ld,aux,n,a[1000],m,con;


void Bin0()
{
    ls=1;
    ld=n;
    while (ls<=ld)
    {
        k=(ls+ld)/2;
        if (a[k]<=aux) ls=k+1;
        if (a[k]>aux) ld=k-1;
        if (ls==ld) break;
    }
    k=(ls+ld)/2;
    if (a[k]>aux) k--;
    if (a[k]==aux) g<<k<<"\n";
    else g<<"-1\n";
}




void Bin1()
{

ls=1;
ld=n;
while (ls<=ld)
{
    k=(ls+ld)/2;
    if (a[k]>aux) ld=k-1;
    if (a[k]<=aux) ls=k+1;
}
k=(ls+ld)/2;
if (a[k]>aux) g<<k-1<<"\n";
else g<<k<<"\n";

}

void Bin2()
{
ls=1;
ld=n;
while (ls<=ld)
{
    k=(ls+ld)/2;
    if (a[k]<aux) ls=k+1;
    if (a[k]>=aux) ld=k-1;
}
k=(ls+ld)/2;
if (a[k]<aux) g<<k+1<<"\n";
else g<<k;

}


int main()
{
f>>n;
for (i=1;i<=n;i++)
{
    f>>a[i];
}
f>>m;
for (i=1;i<=m;i++)
{
    f>>con>>aux;
 if (con==0) Bin0();
 if (con==1) Bin1();
 if (con==2) Bin2();
}

    return 0;
}