Cod sursa(job #1315418)

Utilizator simaghitaSima Gheorghe Eugen simaghita Data 12 ianuarie 2015 19:58:01
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int a[100010],n,m;
int cautare(int x)
{
    int poz,pas;
    poz=0;
    pas=(1<<17);
    pas=(1<<17);
    while(pas>>=1)
    {
        if(poz+pas <= n && a[poz+pas]<=x)
            poz+=pas;
    }
    return poz;
}
int cautare1(int x)
{
    int poz,pas;
    poz=0;
    pas=(1<<17);
    while(pas>>=1)
    {
        if(poz+pas <=n && a[poz+pas]<x)
            poz+=pas;
    }
    return poz;
}
void citire()
{
    int i,op,x,poz;
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];

    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>op>>x;
        if(op<2)
        {
            poz=cautare(x);
            if(op==0 && a[poz]!=x)
                fout<<"-1\n";
            else
                fout<<poz<<"\n";
        }
        else
        {
            poz=cautare1(x);
            fout<<poz+1<<"\n";
        }

    }
    fin.close();
    fout.close();
}
int main()
{
    citire();
    return 0;
}