Cod sursa(job #2428311)

Utilizator AndreiMijaMija Andrei AndreiMija Data 4 iunie 2019 18:06:17
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
//#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream cout("cautbin.out");
int v[100001];
int main()
{
    int n,i,x,s,m,d,tip;
    in>>n;
    for(i = 1; i <= n; i++)
            in>>v[i];
    in>>m;
    for( i = 1; i <= m ; i ++) {
        in>>tip>>x;
        if(tip == 0) {
            s = 1;
            d = n;
            m = (n+1)/2;
            while(s<d) {
                if(v[m] > x)
                    d = m - 1;
                else
                    s = m + 1;
                m =(s+d+1)/2;
            }
            cout<<d<<" ";
        } else if(tip == 1) {
            s = 1;
            d = n;
            m = (n+1)/2;
            while(s<d) {
                if(v[m] > x)
                    d = m - 1;
                else
                    s = m + 1;
                m =(s+d+1)/2;
            }
            cout<<d<<" ";
        } else if(tip == 2) {
            s = 1;
            d = n;
            m = (n+1)/2;
            while(s<d) {
                if(v[m] >= x)
                    d = m - 1;
                else
                    s = m + 1;
                m =(s+d+1)/2;
            }
            cout<<d+1<<" ";
        }
    }

    return 0;
}