Cod sursa(job #1654588)

Utilizator denniscrevusDennis Curti denniscrevus Data 17 martie 2016 11:37:52
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <algorithm>

using namespace std;

int n,v[100005],i,m,c1,x,k;

int cautbin(int val)
{
    int step=1;
    for(;step<=n;step<<=1);
    int start=0;
    for(;step;step>>=1)
    {
    int index=start+step;
    if(index>n) continue;
    if(v[index]<=val)
    start=index;
    }
    return start;
}

int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    f>>m;
    for(i=1;i<=m;i++)
    {
        f>>c1>>x;
        if(c1==0)
        {
            int z = cautbin(x);
            if(v[z]==x)
               g<<z<<"\n";
            else g<<"-1"<<"\n";
        }
        if(c1==1)
        {
            g<<cautbin(x)<<"\n";
        }
        if(c1==2)
        {
            g<<cautbin(x-1)+1<<"\n";
        }

    }
}