Cod sursa(job #1321007)

Utilizator GrusterLazar Dragos Gruster Data 18 ianuarie 2015 18:35:32
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100000],N,x,i,M,m1;
int caut(int val)
{
    int i, step;
    for (step = 1; step < N; step <<= 1);
    for (i = 0; step; step >>= 1)
        if (i + step < N && v[i + step] <= val)
           i += step;
           while (v[i]==val) i++;

    return i;
}
int main()
{
    fin>>N;
    for (i=0;i<N;i++)
        fin>>v[i];
    fin>>M;
    for (i=0;i<M;i++)
        {
            fin>>m1; fin>>x;
        if (m1==0)
            {if (v[caut(x)-1]==x) fout<<caut(x)<<endl;
             else fout<<-1<<endl;}
        else if(m1==1)
                {
                  if (caut(x)) fout<<caut(x)<<endl;
                }
        else if (v[caut(x)]){fout<<-2+caut(x);}
        }
    return 0;
}