Cod sursa(job #922333)

Utilizator BodiIgna Bogdan Bodi Data 22 martie 2013 08:36:24
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[100001],n,x,y,i,k,ok,j,m;
int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>n;
    for(i=1;i<=n;i++)fin>>a[i];
    fin>>m;
    for(k=1;k<=m;k++)
    {
        fin>>y>>x;
        if(y==0)
        {
            ok=0;
            for(i=1;i<=n;i++)if(a[i]==x)ok=1;
            if(ok==1)
            {   i=1;j=n;
                y=(i+j)/2;
                while(a[y]!=x)
                {
                    if(a[y]<x)i=y;
                        else j=y;
                    y=(i+j)/2;
                }
                while(a[y+1]==x)
                {
                    y++;
                }
                fout<<y;
                }
                    else fout<<-1;
                fout<<"\n";
        }
        if(y==1)
        {
            i=n;
            while(a[i]>x)
            {
                i--;
            }
            fout<<i<<"\n";
        }
        if(y==2)
        {
            i=1;
            while(a[i]<x)
            {
                i++;
            }
            fout<<i<<"\n";
        }
    }
    fin.close();
    fout.close();
    return 0;
}