Cod sursa(job #1100152)

Utilizator TheGuyBlajan Vlad TheGuy Data 6 februarie 2014 17:52:50
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int n,m,a[10000];

void CB0(int x){
    int l=1,r=n,s=-1;
    while (l<=r) {
        int m=(l+r)/2;
        if (a[m]==x) {
            s=m;
            l=m+1;
        }else if (a[m]<x){
            l=m+1;
        }else{
            r=m-1;
        }
    }
    fout<<s<<"\n";
}
void CB1(int x){
    int l=1 ,r=n, s=-1;
    while(l<=r) {
        int m=(l+r)/2;
        if (a[m]<=x) {
            s=m;
            l=m+1;
        }else
            r=m-1;
        }
    fout<<s<<"\n";
}
void CB2(int x){
    int l=1,r=n,s=-1;
    while (l<=r) {
        int m=(l+r)/2;
        if (a[m]>=x) {
            s=m;
            r=m-1;
        }else {
            l=m+1;
        }
    }
    fout<<s<<"\n";
}
int main()
{
    int x,porn;
    fin>>n;
    for (int i=1;i<=n;i++)
        fin>>a[i];
    fin>>m;
    for (int i=1;i<=m;i++) {
        fin>>porn>>x;
        if(porn==0)
            CB0(x);
        else if(porn==1)
            CB1(x);
        else
            CB2(x);
    }
    return 0;
}