Cod sursa(job #658129)

Utilizator RalleRaluca Ralle Data 7 ianuarie 2012 23:13:57
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");

int cautbin0(int a[100],int st,int dr,int val)
{long m;
 while(st<=dr) 
   {m=(st+dr)/2;
    if(a[m]<=val) st=m+1;
               else dr=m-1;
   }
 m=(st+dr)/2;
 if(a[m]>val) m--;
 if (a[m]==val) return m;
return -1;}

int cautbin1(int a[100],int st,int dr,int val)
{
 long m;
 while(st<dr)
 {m=(st+dr)/2;
 if(a[m]<=val) st=m+1;
           else st=m;
  }
 m=(st+dr)/2; 
if (a[m]>val) --m;
return m;}

int cautbin2(int a[100],int st,int dr,int val)
{long m;
while(st<dr)
 {m=(st+dr)/2;
 if(a[m]<val)st=m+1;
           else dr=m;
  }
m= (st+dr)/2; 
if(a[m]<val)++m;
return m;}

int main()
{int n,i,a[100],val,m,tip;
  in>>n;
 for(i=1;i<=n;i++)
 in>>a[i];
 in>>m;
  for(i=1;i<=m;i++)
  {in>>tip>>val;
   if(tip==0)out<<cautbin0(a,1,n,val);
   if(tip==1)out<<cautbin1(a,1,n,val);
   if(tip==2)out<<cautbin2(a,1,n,val);       
}


return 0;}