Cod sursa(job #1998535)

Utilizator RishlooRish Loo Rishloo Data 8 iulie 2017 12:25:36
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.34 kb
#include <iostream>
#include <fstream>
using namespace std;

int main()
{   ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int N, M, i, j, k, x, y, v[100000];
    f>>N;
    for(i=1;i<=N;i++)
        f>>v[i];
    f>>M;
    for(j=1;j<=M;j++){
        f>>y>>x;
        if(y==0){
            int st=1,dr=N;
            while(st<=dr){
                int mid=st+(dr-st)/2;
                if(x<v[mid])
                    dr=mid-1;
                else
                    st=mid+1;
            }
        if(v[dr]==x)
            g<<dr;
        else
            g<<"-1";
        }
        if(y==1){
            int st=1,dr=N;
            while(st<=dr){
                int mid=st+(dr-st)/2;
                if(x<v[mid])
                    dr=mid-1;
                else
                    st=mid+1;
            }
            g<<dr;
        }
        if(y==2){
            int st=1,dr=N;
            while(st<=dr){
                int mid=st+(dr-st)/2;
                if(x<v[mid])
                    dr=mid-1;
                else
                    st=mid+1;
            }
            if(v[dr]<x)
                g<<st;
            else
            {
                while(v[dr]==x)
                    dr--;
            }
            g<<dr+1;
        }
        g<<endl;
    }
    return 0;
}