Cod sursa(job #1212848)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 26 iulie 2014 10:30:06
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int MAXN=100005;
int v[MAXN];
int n;
int cauta(int x)
{
    int st=0,dr=n;
    while(dr-st>1)
    {
        int mij=(st+dr)/2;
        if(v[mij]<x)
            st=mij;
        else
            dr=mij;
    }
    return dr;
}
int main()
{
    in>>n;
    v[0]=-100;
    for(int i=1;i<=n;i++)
        in>>v[i];
    int q;
    in>>q;
    while(q--)
    {
        int tip,x, r;
        in>>tip>>x;
        if(tip==0)
        {
            r=cauta(x+1);
            if(v[r] != x)
                r--;
            //cerr << r << " ";
            if(v[r]==x)
                out<<r<<"\n";
            else
                out<<-1<<"\n";
        }
        else if(tip==1)
        {
            r=cauta(x+1);
            if(v[r] > x)
                r--;
            out<<r<<"\n";
        }
        else
            out<<cauta(x)<<"\n";
    }
    return 0;
}