Cod sursa(job #711387)

Utilizator fhandreiAndrei Hareza fhandrei Data 12 martie 2012 00:21:57
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
//Include
#include <stdio.h>
#include <algorithm>
using namespace std;

//Constante
const int MAX_SIZE = 100001;

//Variabile
FILE *in, *out;

int n, nrIntrebari;
int tip, cautat;
int v[MAX_SIZE];

//Main
int main()
{
	in = fopen("cautbin.in","rt");
	out = fopen("cautbin.out","wt");
	fscanf(in, "%d", &n);
	for(int i=0 ; i<n ; ++i)
		fscanf(in, "%d",&v[i]);
	
	int *end = v+n;
	fscanf(in, "%d", &nrIntrebari);
	
	for(int i=1 ; i<=nrIntrebari ; ++i)
	{
		fscanf(in, "%d%d", &tip, &cautat);
		
		if(!tip)
		{
			int *poz = upper_bound(v, end, cautat);
			if(/*poz!=end && */*(poz-1)==cautat)
				fprintf(out, "%d\n", poz-v);
			else fprintf(out, "-1\n");
		}
		else if(tip==2)
		{
			int *poz = lower_bound(v, end, cautat);
			fprintf(out, "%d\n", (poz-v)+1);
		}
		else
		{
			int *poz = upper_bound(v, end, cautat);
			fprintf(out, "%d\n", (poz-v));
		}
		
	}
	
	
	fclose(in);
	fclose(out);
	return 0;
}