Cod sursa(job #472558)

Utilizator ilie.danilaIlie Teodor Danila ilie.danila Data 25 iulie 2010 16:40:56
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

vector<unsigned int> sir;
vector<unsigned int>::iterator iter;

int val, i, n, m, command;

int main()
{
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");

	f >> n;

	for( i = 0; i < n; i++ )
	{
		f >> val;
		sir.push_back( val );
	}

	f >> m;

	for( i = 0; i < m; i++ )
	{
		f >> command >> val;
		switch( command )
		{
		case 0:
			{
				if ( binary_search(sir.begin(), sir.end(), val ) )
				{
					iter = upper_bound(sir.begin(), sir.end(), val );
					g << int( iter - sir.begin() ) << "\n";
				}
				else
					g << "-1\n";
				break;
			}
		case 1:
			{
				iter = lower_bound( sir.begin(), sir.end(), val + 1 );
				g << int ( iter - sir.begin() ) << "\n";
				break;
			}
		case 2:
			{
				iter = upper_bound( sir.begin(), sir.end(), val - 1 );
				g << int ( iter - sir.begin() ) + 1 << "\n";
				break;
			}
		}
	}

	return 0;
}