Cod sursa(job #1321016)

Utilizator R28dbDobreanu Radu R28db Data 18 ianuarie 2015 18:40:33
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream fin("x.in");
ofstream fout("x.out");
int val,N,a[100],i;
int f(int val)
{
    int i,s;
    for (s=1;s<N;s<<=1);
    for (i=0;s;s>>=1)
        if (i+s<N&&a[i+s]<=val)
           i+=s;
    while(a[i]==val) i++;
    i--;
    return i;
}
int f2(int val)
{
    int i,s;
    for (s=1;s<N;s<<=1);
    for (i=0;s;s>>=1)
        if (i+s<N&&a[i+s]<=val)
           i+=s;
    while(a[i]==val) i--;
    i++;
    return i;
}

int main()
{
    fin>>val;
    fin>>N;
    for(i=1;i<=N;i++)
       fin>>a[i];
    i=f(val);
    if(a[i]==val) fout<<f(val)<<'\n';
    else fout<<-1<<'\n';
    fout<<f(val)<<'\n';
    fout<<f2(val)<<'\n';
    fin.close();
    fout.close();
    return 0;
}