Cod sursa(job #847960)

Utilizator PetrutiuPaulPetrutiu Paul Gabriel PetrutiuPaul Data 4 ianuarie 2013 17:57:19
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream>
#include<fstream>

using namespace std;

int a[100005];
int caut0x(int st ,int dr,int x)
{int mij;
while(st<=dr){
	mij=(st+dr)/2;
	if(a[mij]<=x)
		st=dr+1;
		else dr = st - 1;
    }
    mij=(dr+st)/2;
 
    if (a[mij]>x)mij--;
    if (a[mij]==x)
	return mij;
return -1;
}
int caut1x(int st,int dr,int x)
{int mij;
while(st<x){
	mij=(x+st)/2;
	if(a[mij]<=x)
		st++;
	else dr=st-1;
    }
    mij=(x+st)/2;
 
    if (a[mij]>x);
	return mij+1;}
int caut2x(int st,int dr,int x)
{int mij;
while(x<=dr){
	mij=(dr+x)/2;
	if(a[mij]<=x)
		dr--;
	else x++;
    }
    mij=(dr+x)/2;
 
    if (a[mij]>x)mij++;
	return mij;}
int main()
{
int n,i,m,x1,st1,dr1;
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
f>>n;
for(i=1;i<=n;i++)f>>a[i];
st1=1;dr1=n;
f>>m;
for(i=1;i<=m;i++){
	f>>x1;
g<<caut0x(st1,dr1,x1)<<endl;
g<<caut1x(st1,dr1,x1)<<endl;
g<<caut2x(st1,dr1,x1)<<endl;}
}