Cod sursa(job #880083)

Utilizator datBumbleBPanainte Adrian datBumbleB Data 16 februarie 2013 11:38:11
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include<iostream>
#include<fstream>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int main(){

    int n, m, x, a, b, p, q, r, ok = 0, k = 2;
    fin >> n;
    int v[n];
    for(int i = 1; i <= n; i ++){
     fin >> x;
     v[i] = x;
    }
    fin >> m;
    for(int i = 1; i <= m; i ++){
        fin >> a >> b;
        ok = 0;
        if(a == 0){
        while(!ok){

        if(b > v[n/k]) k *= 2;//for(int i = n/2; i <= n; i++)if(b == v[i]) p = i;
        else if(b < v[n/k])k *=2;
        else if(b == v[n/k]) {
            p = v[n/k] + 1;
            ok = 1;
        }
        }
        cout << p << endl;

        }else if(a == 1){
            while(!ok)
        if(b > v[n/k]) k *= 2;
        else if(b > v[n/k])k *=2;
        else if(b >= v[n/k]) {
            q = n/k;
            ok = 1;
        }
        cout << q << endl;
        }
        else if (a == 2){
            while(!ok)
       if(b > v[n/k]) k *= 2;
        else if(b < v[n/k])k *=2;
        else if(b <= v[n/k]) {
            r = n/k;
            ok = 1;
        }
        }
       }


        cout << r << endl;

        return 0;


}