Cod sursa(job #657776)

Utilizator caramete_tCaramete Tiberiu caramete_t Data 7 ianuarie 2012 13:29:27
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int i,n,a[100020],mij=0,x,y,z;
void citire()
{f>>n;
for(i=0;i<n;i++)  
f>>a[i];}
int sch1(int l,int r,int s)
{while(l<=r)
{mij=l+(r-l)/2;
if(a[mij]<=s)
l=mij+1;
else
r=mij-1;}
mij=l+(r-l)/2;
if(a[mij]>s)
mij--;
if(a[mij]==mij)
return mij;
return -1;}
int sch2(int l,int r,int s)
{while(l<r)
{mij=l+(r-l)/2;
if(a[mij]<=s)
l=mij+1;
else
r=mij;}
mij=l+(r-l)/2;
if(a[mij]>s)
mij--;
return mij;}
int sch3(int l,int r,int s)
{while(l<r)
{mij=l+(r-l)/2;
if(a[mij]<s)
l=mij+1;
else
r=mij;}
mij=l+(r-l)/2;
if(a[mij]<s)
++mij;
return mij;}
int main()
{citire();
f>>x;
for(i=0;i<x;i++)
{f>>y>>z;
 if(y==0)
 g<<sch1(0,n,z)<<" ";
 else
 if(y==1)
 g<<sch2(0,n,z)<<" ";
 else
 if(y==2)
 g<<sch3(0,n,z)<<" ";}
f.close();
g.close();}