Cod sursa(job #2320051)

Utilizator RazvanucuPopan Razvan Calin Razvanucu Data 14 ianuarie 2019 08:37:10
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int i,t,M,k,N,m,v[100000];
int raspuns0(int s,int d,int x)
{
 while(s<=d)
 {
   m=(s+d)/2;
   if(v[m]<=x)
    s=m+1;
   else d=m-1;
}
 if(v[m]>x)
    m--;
 if(v[m]==x)
    g<<m<<"\n";
 else g<<"-1"<<"\n";

    return 0;
}
int raspuns1(int s,int d,int x)
{
  while(s<d)
  {
    m=(s+d)/2;
    if(v[m]<=x)
        s=m+1;
    else d=m;
  }
 if(v[m]>x)
    m--;
 if(v[m]<=x)
    g<<m<<"\n";
 else g<<"-1"<<"\n";

    return 0;
  }
int raspuns2(int s,int d,int x)
{
  while(s<d)
  {
    m=(s+d)/2;
    if(v[m]>x)
       s=m+1;
     else d=m;
  }
if(v[m]<x)
    m++;
if(v[m]>=x)
    g<<m<<"\n";
 else g<<"-1"<<"\n";

return 0;
}
int main()
{
   f>>N;
   for(i=1;i<=N;i++)
    f>>v[i];

   f>>M;
   for(i=1;i<=M;i++)
   {
    f>>t>>k;
    if(t==0)
       raspuns0(1,N,k);
    if(t==1)
       raspuns1(1,N,k);
    if(t==2)
        raspuns2(1,N,k);
   }
    return 0;
}