Cod sursa(job #2545367)

Utilizator RaduZevriRadu Zevri RaduZevri Data 13 februarie 2020 00:05:37
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include<stdio.h>

int n,m;
int arr[100001];

int bs(int v){
	/*arr[l-1]<=v;arr[r]>v*/
	int l=0,r=n;
	while(l<r){
		int mid = (l+r)/2;
		if(arr[mid]>v) r=mid;
		else l=mid+1;
	}
	return l-1; // arr[l-1]<=v;arr[l]>v
}

int main(){
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	scanf("%d",&n);
	for(int i=0;i<n;i++) scanf("%d",&arr[i]);
	scanf("%d",&m);
	while(m--){
		int ch,val;
		scanf("%d%d",&ch,&val);
		int idx = bs(val);
		if(ch==0) {
			if(arr[idx]==val) printf("%d\n",idx+1);
			else printf("-1\n");
		}
		else if (ch==1){
			printf("%d\n",idx+1);
		}
		else printf("%d\n",bs(val-1)+2);
	}
}