Cod sursa(job #922334)

Utilizator BodiIgna Bogdan Bodi Data 22 martie 2013 08:38:39
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.49 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;
            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<<"\n";
        }
        if(y==2)
        {
            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<<"\n";
        }
    }
    fin.close();
    fout.close();
    return 0;
}