Cod sursa(job #1768274)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 30 septembrie 2016 16:58:32
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.69 kb
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    ifstream fin ("cautbin.in");
    ofstream fout ("cautbin.out");
    int n;
    fin>>n;
    int v[n];
    for (int i=0;i<n;++i)
    {
        fin>>v[i];
    }
    int b;
    fin>>b;
    for (int i=0;i<b;++i)
    {
            int a,x;
            fin>>a>>x;
            int s=0,d=n-1,sol;
            switch (a)
            { case 0 :sol=-1;
            while (s<=d)
            {
                int mij=(d+s)/2;
                 if (x>=v[mij])
                {
                    s=mij+1;
                }
                else
                {
                    if (v[mij]==x){sol=mij;break;}
                    else
                    {
                    d=mij-1;
                    }
                }
            }
            fout<<sol<<"\n";
            break;


            case 1 :x--;
            while (s<=d)
            {
                int mij=(d+s)/2;
                 if (x>=v[mij])
                {
                    s=mij;
                   s=mij+1;
                }
                    else
                    {
                    d=mij-1;
                    }
            }
            fout<<sol<<"\n";
            break;


            case 2 : x++;
            while (s<=d)
            {
                int mij=(d+s)/2;
                 if (x>=v[mij])
                {

                    s=mij+1;
                }
                    else
                    {
                    sol=mij;
                    d=mij-1;
                    }
            }
            fout<<sol<<"\n";
            break;
            }
    }
}