Cod sursa(job #1654592)

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

using namespace std;
int n,v[100005],i,m,index,c1,x;
int cautbin(int x)
{
    int step=1, start=0;
    for(; step<=n; step<<=1);
    for(;step;step>>=1)
    {
        int index=start+step;
        if(index>n) continue;
        if(v[index]<=x) 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";
        }

    }
}