Cod sursa(job #2661101)

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

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");
vector<int> v;

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++)
	{
		int x;
		in>>x;
		v.push_back(x);
	}
	int m;
	in>>m;
	while(m--)
	{
		int cod,x;
		in>>cod>>x;
		if(cod==0)
		{
			out<<cautare(1,n,x,0)+1;
		}
		else if(cod==1)
			out<<cautare(1,n,x,1)+1;
		else
			out<<cautare(1,n,x,2)+1;
		out<<"\n";
	}
	return 0;
}