Cod sursa(job #2077215)

Utilizator Hidden.bdBurlacu Doru Hidden.bd Data 27 noiembrie 2017 20:04:38
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>

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


int main(){

    int N, sN[100002], M, x, intrebare;
    fin >> N;
    
    for( int i = 1 ; i <= N ; ++i ){
        fin >> sN[i];
    }
    
    fin >> M;
    
    for( int fg = 1 ; fg <= M ; ++fg ){
        fin >> intrebare >> x;
        
        int st = -1, dr = N, mid;
        while( dr - st > 1 ){
            mid = st + (dr - st) / 2;
            if( x > sN[mid] ) st = mid;
            else dr = mid;
        }
        
        if( intrebare == 0 ){
            
            if( dr == N || sN[dr] != x ){
                if( dr == N && sN[dr] == x ) fout << dr;
                else fout << -1;
            }else{
                
                for( int parcurgere = dr ; parcurgere <= N ; ++parcurgere ){
                    if( sN[parcurgere] != x ){
                        fout << parcurgere - 1;
                        break;
                    }else if( parcurgere == N && sN[parcurgere] == x ) fout << parcurgere;
                }
                
                
            }
            
        }
        
    }
    
}