Cod sursa(job #1321070)

Utilizator felipeGFilipGherman felipeG Data 18 ianuarie 2015 19:14:05
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100500],m,n,s,i,q,x;
void zero(int aux)
{
   int i0;
    for (s=1;s<n;s<<=1);
     for (i0=0;s;s>>=1)
        if (i0+s<n&&v[i0+s]<=aux)
           i0+=s;
    if(v[i0]==aux)g<<i0+1<<'\n';
    else g<<-1<<'\n';
}
void unu(int aux)
{
    int i1;
    for (s=1;s<n;s<<=1);
     for (i1=0;s;s>>=1)
        if (i1+s<n&&v[i1+s]<=aux)
           i1+=s;
    g<<i1+1<<'\n';
}
void doi(int aux)
{
    int i2;
    for(s=1;s<n;s<<=1);
     for(i2=0;s;s>>=1)
         if(i+s<n&&v[i2+s]<=aux)
           i2+=s;
        while(v[i2]==aux)i2--;
        i2++;
     g<<i2+1<<'\n';
}
int main()
{
    f>>n;
    for(i=0;i<n;++i)
       f>>v[i];
    f>>m;
    for(i=0;i<m;++i)
    {
        f>>q>>x;
        if(q==0)zero(x);
        if(q==1)unu(x);
        if(q==2)doi(x);
    }
    return 0;
}