Cod sursa(job #472636)

Utilizator andra23Laura Draghici andra23 Data 25 iulie 2010 22:03:56
Problema Cautare binara Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.47 kb
#include<iostream.h>
#include<fstream.h>

int main(){
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int n, x;
    f>>n;
    int a[100010], i, j, st, dr, m, t, p;
    for (i = 1; i <= n; i++)
        f>>a[i];
    
    f>>p;
    for (i = 1; i <= p; i++){
        f>>t>>x;
        
        st = 1;
        dr = n;
        m = (st+dr)/2;
        
        while (st <= dr && a[m] != x){
            if (x < a[m])
                dr = m-1;
            else
                st = m+1;
            m = (st+dr)/2;
        }
        
        if (t == 0)
            if (a[m] != x)
                g<<-1<<'\n';
            else {
                while (a[m] == x)
                    m++;
                g<<m-1<<'\n';    
            }
        else 
            if (t == 1){
                if (a[m] <= x){
                    while (a[m] <= x)
                        m++;
                    g<<m-1<<'\n';
                }
                else {
                    while (a[m] > x)
                        m--;
                    g<<m<<'\n';
                }    
            }
            else {
                if (a[m] >= x){
                    while (a[m] >= x)
                        m--;
                    g<<m+1<<'\n';
                }
                else {
                    while (a[m] < x)
                        m++;
                    g<<m<<'\n';
                }    
            }
    }
    
    return 0;
}