Cod sursa(job #2661110)

Utilizator BogdanTicuTicu Bogdan Valeriu BogdanTicu Data 21 octombrie 2020 12:37:29
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005];

int cautare(int st,int dr,int val,int ok)
{
	int ans=-1;
	while(st<=dr)
	{
		int mid=(st+dr)/2;
		if(v[mid]==val)
		{
			ans=mid;
			if(ok!=2) st=mid+1;
			else dr=mid-1;
		}
		else if(v[mid]<val) st=mid+1;
		else dr=mid-1;
	}
	if(ok==0) return ans;
	else if(ok==1)
		return dr;
	return st;

}
int main()
{
	int n;
	in>>n;
	for(int i=1;i<=n;i++)
	{
		in>>v[i];
	}
	int m;
	in>>m;
	while(m--)
	{
		int cod,x;
		in>>cod>>x;
		if(cod==0)
		{
			out<<cautare(1,n,x,0);
		}
		else if(cod==1)
			out<<cautare(1,n,x,1);
		else
			out<<cautare(1,n,x,2);
		out<<"\n";
	}
	return 0;
}