Cod sursa(job #398587)

Utilizator Mishu91Andrei Misarca Mishu91 Data 18 februarie 2010 23:22:01
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <algorithm>

using namespace std;

const int MAX_N = 100005;

ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");

int N, M, V[MAX_N];

int main()
{
	fin >> N;
	for(int i = 1; i <= N; ++i)
		fin >> V[i];

	fin >> M;
	for(int i = 1; i <= M; ++i)
	{
		int t, x;
		fin >> t >> x;

		switch(t)
		{
			case 0 : 
			{
				int p = upper_bound(V+1, V+N+1, x) - V - 1; 
				if(V[p] == x)
					fout << p << "\n";
				else
					fout << "-1\n";
				break;
			}
			case 1 : fout << upper_bound(V+1, V+N+1, x) - V - 1 << "\n"; break;
			default : fout << lower_bound(V+1, V+N+1, x) - V << "\n";
		}
	}
}