Cod sursa(job #682048)

Utilizator mihaidutescuDutescu Mihai mihaidutescu Data 18 februarie 2012 15:06:26
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int main()
{
	unsigned int v[100000],n,m,t,nr,poz;
	unsigned int *p;
	FILE *f=fopen("cautbin.in","r"),*g=fopen("cautbin.out","w");
	fscanf(f,"%u\n",&n);
	for(int i=0;i<n;i++)
		fscanf(f,"%u",&v[i]);
	fscanf(f,"%u",&m);
	for(int i=0;i<m;i++)
	{
		fscanf(f,"%u %u\n",&t,&nr);
		if(t<2)
		{
			p=upper_bound(v,v+n,nr);
			poz=p-v;
			if(v[poz-1]==nr||t)
				fprintf(g,"%u\n",poz);
			else
				fprintf(g,"-1\n");
		}
		else
		{
			p=lower_bound(v,v+n,nr);
			poz=p-v+1;
			if(poz-1!=n)
				fprintf(g,"%u\n",poz);
			else
				fprintf(g,"0\n");
		}
	}
	return 0;
}