Cod sursa(job #3343531)

Utilizator CristianTudoracheCristian Tudorache CristianTudorache Data 27 februarie 2026 18:04:25
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.8 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int MAXN=100000;
int v[MAXN];
int main()
{
   int N;
   fin>>N;
   for(int i=0;i<N;i++)
   {
       fin>>v[i];
   }
   int M;
   fin>>M;
   for(int q=0;q<M;q++)
   {
       int tip,x;
       fin>>tip>>x;
       if(tip==0)
       {
           int st=0,dr=N-1,ans=-2;
           while(st<=dr)
           {
               int mid=(st+dr)/2;
               if(v[mid]==x)
               {
                   ans=mid;
                   st=mid+1;
               }else if(v[mid]<x)
               {
                   st=mid+1;
               }else{
                   dr=mid-1;
               }
           }
           fout<<ans+1<<"\n";
       }
       else if(tip==1)
       {
           int st=0,dr=N-1,ans=-1;
           while(st<=dr)
           {
               int mid=(st+dr)/2;
               if(v[mid]<=x)
               {
                   ans=mid;
                   st=mid+1;
               }else{
                   dr=mid-1;
               }
           }
           fout<<ans+1<<"\n";
       }
       else if(tip==2)
       {
           int st=0,dr=N-1,ans=N;
           while(st<=dr)
           {
               int mid=(st+dr)/2;
               if(v[mid]>=x)
               {
                   ans=mid;
                   dr=mid-1;
               }else{
                   st=mid+1;
               }
           }
           fout<<ans+1<<"\n";
       }
   }
    return 0;
}