Cod sursa(job #3265031)

Utilizator Teodor-CiprianNica Teodor-Ciprian Teodor-Ciprian Data 26 decembrie 2024 16:30:34
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100002],N;
int CB(int a)
{
    int L=1,R=N,mij;
    while(L<R)
    {
    mij=(L+R)/2;
    if(v[mij]>a)
    R=mij-1;
    else
    if(v[mij]<a)
    L=mij+1;
    else
    return mij;
    }
    return mij;
}
int main()
{
    int M,c,pz,x;
    fin>>N;
    for(int i=1;i<=N;i++)
    {
    fin>>v[i];
    }
    fin>>M;
    while(M)
    {
        fin>>c>>x;
        pz=CB(x);
        
        if(c==0)
        {
        if(v[pz]==x)
        {
        while(v[pz]==x && pz<=N)
        pz++;
        pz--;
        fout<<pz;
        }
        else
        fout<<-1;
        }
        else
        if(c==1)
        {
        while(v[pz]<=x && pz<=N)
        pz++;
        pz--;
        fout<<pz;
        }
        else
        if(c==2)
        {
        while(v[pz]>=x && pz>=1)
        pz--;
        pz++;
        fout<<pz;
        }
        M--;
        if(M!=0)
        fout<<endl;
    }
    return 0;
}