Cod sursa(job #3316600)

Utilizator luqnq_bBalasa Luana Catinca luqnq_b Data 19 octombrie 2025 13:23:26
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[100002];

int bin(int n, int x, int c)
{
    int st = 1;
    int dr = n;
    while ( st <= dr )
    {
        int mijl = ( st + dr ) / 2;
        if ( v[mijl] == x )
        {
            if ( c == 0 || c == 1)
            {
                while ( v[mijl] == x )
                    mijl++;
                mijl--;
                return mijl;
            }
            else
            {
                while ( v[mijl] == x )
                    mijl--;
                mijl++;
                return mijl;
            }
        }
        if ( v[mijl] > x )
            dr = mijl - 1;
        if ( v[mijl] < x )
            st = mijl + 1;
    }

    if ( c == 0 )
        return -1;
    else
        return st;
}

int main()
{
    int n;
    fin >> n;
    for (int i=1; i<=n; i++)
        fin >> v[i];
    int m, c, x;
    fin >> m;
    while ( m > 0 )
    {
        fin >> c >> x;
        fout << bin(n, x, c) << "\n";
        m--;
    }
    
    
    
    return 0;
}