Cod sursa(job #818644)

Utilizator varga13VarGaz13 varga13 Data 17 noiembrie 2012 19:33:37
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>			//cautare binara 
using namespace std;
int v[100],x,n;

int poz(int x, int s, int d,int u)
{int mid=s+(d-s)/2;
switch (u){
case 0:
	if(d-s<=1)
		{if (v[mid] > x) mid--;
		
		if (v[mid] == x)
			return mid+1;
		else
			return -1;
	
			}
	//if(v[mid]==x) return mid;
	if(v[mid]>x) return	poz(x,s,mid-1,u);
	else return poz(x,mid+1,d,u);
	
case 1: 
	
	if(d-s<=1)
		{if (v[mid] > x) mid++;
		return mid+1;
	
			}
		
		
	

	if(v[mid]>x) return	poz(x,s,mid,u);
	else return poz(x,mid+1,d,u);
	
case 2:
	if(d-s<=1)
		{if (v[mid] < x) mid--;
		return mid-1;
	
			}
	if(v[mid]>x) return	poz(x,s,mid,u);
	else return poz(x,mid+1,d,u);
}
}
int main()
{int u;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

f>>n;

for(int i=0;i<n;i++)
f>>v[i];

f>>n;

for(int i=0;i<n;i++)
{
f>>u;
f>>x;
g<<poz(x,-1,n,u)+1<<endl;
}

g.close();
f.close();
return 0;
}