Cod sursa(job #1023152)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 6 noiembrie 2013 15:30:05
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int n, v[100001];
int bin_search(int v[], int n, int x)
{
    int i, pas=1<<19;
    for (i=0;pas!=0;pas=pas/2)
        if(i+pas<=n && v[i+pas]<x)
        i=i+pas;
    return i+1;
}
int main()
{
    f>>n;
    int i,x,m,c,poz;
    for (i=1;i<=n;i++)
        f>>v[i];
    f>>m;
    for (i=1;i<=m;i++)
    {
        f>>c>>x;
        poz=bin_search(v,n,x);
        if(c==0)
            {if(v[poz]!=x)
                g<<-1<<endl;
            else
                {
                    while(v[poz+1]==x)
                        poz++;
                    g<<poz<<endl;}

            }
        if (c==1)
                   {
                       while (v[poz+1]==x)
                     poz++;
                     g<<poz<<endl;}


        if(c==2)
            {
                while(v[poz-1]>=x)
                poz--;
            g<<poz<<endl;
            }


    }
    f.close();g.close();
    return 0;
}