Cod sursa(job #2778592)

Utilizator Mendea_IanisMendea Ianis Teodor Mendea_Ianis Data 1 octombrie 2021 19:59:18
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.57 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int main()
{
    int n,m,B[100005],V[100005],M[100005],sol;
    fin>>n;
    for(int i = 1;i<=n;i++)
    {
        fin>>V[i];
    }
    fin>>m;
    for(int i = 1;i<=m;i++)
    {
        fin>>M[i];
        fin>>B[i];
    }
    for(int i = 1;i<=m;i++)
    {
        int st = 1;
        int dr = n;
        sol = -1;
        while(st<=dr)
        {
            int mid = st + (dr-st)/2;

            if(M[i] == 0)
            {
                if(V[mid] == B[i])
                {
                    sol = mid;
                    st = mid + 1;
                }
                if(V[mid] < B[i])
                {
                    st = mid + 1;
                }
                if(V[mid] > B[i])
                {
                    dr = mid - 1;
                }
            }
            if(M[i] == 1)
            {
                if(V[mid] > B[i])
                {
                    dr = mid - 1;
                }
                if(V[mid] <= B[i])
                {
                    sol = mid;
                    st = mid + 1;
                }
            }
            if(M[i] == 2)
            {
                if(V[mid] < B[i])
                {
                    st = mid + 1;
                }
                if(V[mid] >= B[i])
                {
                    sol = mid;
                    dr = mid - 1;
                }
            }
        }
        fout<<sol<<'\n';
    }
}