Cod sursa(job #869250)

Utilizator anaid96Nasue Diana anaid96 Data 1 februarie 2013 10:40:40
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

FILE *in,*out;
bool mygreater (int i,int j) { return (i>j); }
int n,m,tip,val,v[100100],x;
int main(void)
{
	
	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]);
	fscanf(in,"%d",&m);
	for(int i=1;i<=m;++i)
	{
		fscanf(in,"%d%d",&tip,&val);
		if(tip==0)
		{
			x=upper_bound(v,v+n,val)-v;
			if (x <= n && x >= 1 && v[x-1] == val)
				fprintf(out,"%d\n",x);
			else
				fprintf(out,"-1\n");
		}
		else
			if(tip==1)
			{
				x = lower_bound(v , v + n , val + 1) - v ;
				fprintf(out,"%d\n",x);
				
			}	
			else
			{	
				x = upper_bound(v , v + n ,  val- 1) - v+1;
				fprintf(out,"%d\n", x);
				
			}	
	}		
	fclose(in);
	fclose(out);
	return 0;	
}