Cod sursa(job #770731)

Utilizator 5t3fristea stefan 5t3f Data 23 iulie 2012 18:25:08
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;
int V[100100];
int N, M, i, p, u, m, x, t;
int main(){ 
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	f>>N;
	for (i=1;i<=N;i++)
		f>>V[i];
	
	f>>M;
	for (;M;M--) {
		f>>t>>x;
		switch (t) {
		case 0:
			
			p = 1; u = N;
			while (p<=u) {
				m = (p+u)/2;
				if (V[m]<=x)
					p = m+1;
				else
					u = m-1;
			}
			if (V[u] == x)
				g<<u<<"\n";
			else
				g<<"-1\n";
			
			break;
		case 1:
			p = 1; u = N;
			while (p<=u) {
				m = (p+u)/2;
				if (V[m]<=x)
					p = m+1;
				else
					u = m-1;
			}
			g<<u<<"\n";
			
			break;
			
		case 2:
			
			p = 1; u = N;
			while (p<=u) {
				m = (p+u)/2;
				if (V[m] >= x) {
					u = m-1;
				} else {
					p = m+1;
				}
			}
			g<<p<<"\n";
			break;
		};
	}
	
	return 0;
}