Cod sursa(job #2493577)

Utilizator drknss_Hehe hehe drknss_ Data 16 noiembrie 2019 15:00:42
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<bits/stdc++.h>
using namespace std;
int a[100010],n,m,q;

int cautare_binara0(int x)
{
	int l=1; int r=n; int mid;
	while(l<r)
	{
		mid=(r+l)/2;
		if(a[mid]>=x)r=mid;else l=mid+1;
	}
	if(a[mid]!=x)mid--;
	if(a[mid]!=x)return -1;else
	return mid;
}
int cautare_binara1(int x)
{
	int l=1; int r=n; int mid;
	while(l<r)
	{
		mid=(r+l)/2;
		if(a[mid]>=x)r=mid;else l=mid+1;
	}
	if(a[mid]!=x)mid--;
	return mid;
}
int cautare_binara2(int x)
{
	int l=1; int r=n; int mid;
	while(l<r)
	{
		mid=(r+l)/2;
		if(a[mid]>x)r=mid;else l=mid+1;
	}
	if(a[mid]!=x)mid++;
	return mid;
}

int main()
{
	ifstream cin("cautbin.in");
	ofstream cout("cautbin.out");
	int x;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>q>>x;
		if(q==0) cout<<cautare_binara0(x)<<"\n";
		if(q==1) cout<<cautare_binara1(x)<<"\n";
		if(q==2) cout<<cautare_binara2(x)<<"\n";
	}

	return 0;
}