Cod sursa(job #662812)

Utilizator Byby8Ene Bianca Byby8 Data 16 ianuarie 2012 23:45:24
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
#define max 100008
using namespace std;
int i,x,y,n,m,v[max];

ifstream f("cautbin.in");
ofstream g("cautbin.out");
ofstream h("afisare.out");

int caz_0(int x)
{int m,l,r;
l=1;
r=n;
while (l!=r)
{m=(l+r+1)/2;
if(x>=v[m])
l=m;
else
r=m-1;}
if(x!=v[l])
return -1;
return l;
}
 
int caz_1(int x)
{int m,l,r;
l=1;
r=n;
while(l!=r)
{m=(l+r)/2;
if(x<=v[m])
r=m;
else
l=m+1;}
if(v[l]>x)
return l-1;
return l;
}
 

int caz_2(int x)
{int m,l,r;
l=1;
r=n;
while(l!=r)
{m=(l+r)/2;
if(x<=v[m])
r=m;
else
l=m+1;}
if(v[l]<x)
return l+1;
return l;
} 

void cazuri()
{for(i=1;i<=m;i++)
{f>>x>>y;
if(x==0)
g<<caz_0(y);
if(x==1)
g<<caz_1(y);
if(x==2)
g<<caz_2(y);
g<<"\n";}
     }

void citire()
{f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>m;
}

void afisare()
{for(i=1;i<=n;i++)
 h<<v[i]<<"\n";
 h.close();
    }

int main ()
{citire();
cazuri();
afisare();
f.close ();
g.close ();
return 0;
}