Cod sursa(job #3148800)

Utilizator TeogaloiuMatei Ionescu Teogaloiu Data 4 septembrie 2023 13:48:12
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>

using namespace std;
int v[100001];
int maxst(int x,int n)
{
    int st = 1,dr = n,ans;
    while (st <= dr)
    {
        int med=(st+dr)/2;
        if(v[med]<=x)
        {
            ans=med;
            st=med+1;
        }
        else
            dr=med-1;
    }
    return ans;
}
int mindr(int x,int n)
{
    int st=1,ans,dr=n;
    while (st<=dr)
    {
        int med=(st+dr)/2;
        if(v[med]>=x)
        {
            ans=med;
            dr=med-1;
        }
        else
            st=med+1;
    }
    return ans;
}
int main()
{
    int n,m;
    cin>>n;
    for (int i = 1; i <= n; i++)
        cin>>v[i];
    cin>>m;
    for (int  i = 1 ; i <= m; i++)
    {
        int cer,x;
        cin>>cer>>x;
        if(cer==1 or cer==0)
            cout<<maxst(x,n)<<'\n';
        else
            cout<<mindr(x,n)<<'\n';
    }
    return 0;
}