Cod sursa(job #2224816)

Utilizator andreisontea01Andrei Sontea andreisontea01 Data 25 iulie 2018 11:31:36
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

int num[100005];

int caut(int st, int dr, int val){
    int mid;
    while(st <= dr){
        mid = (st + dr) / 2;
        if(num[mid] > val)
            dr = mid - 1;
        else
            st = mid + 1;
    }
    return st;
}

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    int n;
    fin >> n;
    for(int i = 1; i <= n; ++i)
        fin >> num[i];
    int m, op, x;
    fin >> m;
    for(int q = 1; q <= m; ++q){
        fin >> op >> x;
        int mid = caut(1, n, x);
        if(op == 0){
            while(num[mid] == x && mid <= n)
                mid++;
            mid--;
        }
        if(op == 1){
            while(num[mid] == x && mid <= n)
                mid++;
            mid--;
        }
        if(op == 2){
            if(num[mid] == x)
                mid++;
        }
        fout << mid << "\n";
    }
    return 0;
}