Cod sursa(job #3121380)

Utilizator RaresHNDINeacsu Rares Andrei RaresHNDI Data 12 aprilie 2023 13:45:20
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.37 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fisin("cautbin.in");
ofstream fisout("cautbin.out");

int main()
{
    int M,N,sol;
    unsigned int v[100001];

    fisin>>N;
    for(int i=1;i<=N;i++)
    {
        fisin>>v[i];
    }
    fisin>>M;
    for(int i=1;i<=M;i++)
    {
        sol=-1;
        unsigned int x,y;
        fisin>>x>>y;
        int start=1,final=N;
        while(start<=final)
        {
            unsigned int mid=(start+final)/2;
            if(x==0)
            {
                if(y==v[mid])
                {
                    sol=mid;
                    start=mid+1;
                }
                if(v[mid]>y)
                    final=mid-1;
                if(v[mid]<y)
                    start=mid+1;
            }
            if(x==1)
            {
                if(v[mid]>y)
                    final=mid-1;
                if(v[mid]<=y)
                {
                    sol=mid;
                    start=mid+1;
                }
            }
            if(x==2)
            {
                if(v[mid]>=y)
                {
                    sol=mid;
                    final=mid-1;
                }
                if(v[mid]<y)
                {
                    start=mid+1;
                }
            }
        }
        fisout<<sol<<endl;
    }
}