Cod sursa(job #2462395)

Utilizator Theo_123Vasile Theodor Theo_123 Data 27 septembrie 2019 11:19:53
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.53 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[100001];
int main()
{
   ifstream fin("cautbin.in");
   ofstream fout("cautbin.out");
   int n,m,dr,st,mid,i=0,tip,x,a;
   fin>>n;
   for(i=1;i<=n;i++){
       fin>>v[i];
   }
   fin>>m;
   for(i=1;i<=m;i++){
       fin>>tip>>x;
       switch (tip){
           case 0:
               st=1;
               dr=n;
               while(st<=dr){
                    int mid=(st+dr)/2;
                    if(v[mid]<=x){
                        st=mid+1;
                    }else{
                        dr=mid-1;
                    }
               }
               if(dr>0&&v[dr]==x){
                   fout<<dr<<endl;
               }else{
                   fout<<"-1"<<endl;
               }

               break;
          case 1:
              st=1;
              dr=n;
              while(st<=dr){
                  int mid=(st+dr)/2;
                  if(v[mid]<=x){
                      st=mid+1;
                  }else{
                      dr=mid-1;
                    }
               }
               fout<<dr<<endl;
               break;
          case 2:
               st=1;
               dr=n;
               while(st<=dr){
                    int mid=(st+dr)/2;
                    if(v[mid]<x){
                        st=mid+1;
                    }else{
                        dr=mid-1;
                    }
               }
               fout<<st<<endl;

               break;

       }
   }
   return 0;
}