Cod sursa(job #408148)

Utilizator xtephanFodor Stefan xtephan Data 2 martie 2010 21:04:54
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>
#include<vector>
#include <algorithm>

using namespace std;

int n;
int v[100100];

void cit();
void go();

int main() {
	
	freopen("cautbin.in", "r", stdin);
	freopen("cautbin.out", "w", stdout);
	
	cit();
	go();
	
	return 0;
}

void cit() {
	
	scanf("%d",&n);
	for(int i=1; i<=n;i++) {
		scanf("%d", &v[i]);
	}
}


void go() {
	int m,i;
	
	sort(v+1,v+n+1);
	
	scanf("%d",&m);
	
	for(i=1; i<=m;i++) {
		
		int x,y;
		
		scanf("%d%d",&y,&x);
		
		if(y==0) {
			int r=upper_bound(v + 1, v + n + 1, x) - v -1;
			
			if(r>=1 && r<=n && v[r]==x)
				printf("%d\n",r);
			else
				printf("-1");
		}
		
		if(y==1) {
			int r=lower_bound(v+1,v+n+1,x+1)-v-1;
			printf("%d\n",r);
		}
		
		if(y==2) {
			int r=upper_bound(v+1,v+n+1,x-1)-v;
			printf("%d\n",r);
		}
	}
}