Cod sursa(job #927682)

Utilizator diana20Dersedan Diana diana20 Data 25 martie 2013 22:52:34
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<iostream>
#include<fstream>
using namespace std;

int n, v[100002],m, intr, val;

int f0 ( int val, int st, int dr)
{
	int mijl;
	while(st<dr)
	{
		mijl=st+( dr-st) /2;
		if(v[mijl]>val) dr=mijl-1;
					else st=mijl+1;
	}
	if(v[st]>val) st--;
	if(v[st]==val) return st;
	return -1;	
}

int f1 (int val, int st, int dr)
{
	int mijl;
	while(st<dr)
	{
		mijl=st+( dr-st) /2;
		if(v[mijl]<=val)  st=mijl+1;
			else  dr=mijl-1;
	}
	if(v[st]>val) st--;
	return st;
}

int f2 ( int val, int st, int dr)
{
	int mijl;
	while(st<dr)
	{
		mijl=st+( dr-st) /2;
		if(v[mijl]<val)  st=mijl+1;
			else  dr=mijl-1;
	}
	if(v[st]<val) st++;	
	return st;	
}

int main()
{
	int i,indice;
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	f>>m;	
	for(i=1;i<=m;i++)
	{
		f>>intr>>val;
		if ( intr==0) g<<f0(val,1,n)<<endl;
			else 
				if( intr==1) g<<f1(val,1,n)<<endl;
					else g<<f2(val,1,n)<<endl;			
	}	

	return 0;
}