Cod sursa(job #2786584)

Utilizator alexdmnDamian Alexandru alexdmn Data 21 octombrie 2021 10:52:05
Problema Cautare binara Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

using namespace std;
int v[100005];
int main()
{
	ifstream cin("cautbin.in");
	ofstream cout("cautbin.out");

	int n,m,c,a,st=0,pm=1,in;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>v[i];
	}

	cin>>m;
	for(int j=0;j<m;j++)
	{
		cin>>c>>a;
		pm=1;
		st=0;
		if(c==0)
		{
			int poz=-1;
			while(pm<=n)
				pm<<=1;
			pm>>=1;

			for(int p=pm;p>0;p>>=1)
			{
				in=st|p;
				if(v[in]<=a && in<=n)
				{
					if(v[in]==a)
						poz=in;
					st|=p;
				}
			}
			cout<<poz<<'\n';
		}
		if(c==1)
		{
			int poz=-1;
			while(pm<=n)
				pm<<=1;
			pm>>=1;

			for(int p=pm;p>0;p>>=1)
			{
				in=st|p;
				if(v[in]<=a && in<=n)
				{
					poz=in;
					st|=p;
				}
			}
			cout<<poz<<'\n';
		}
		if(c==2)
		{
			int poz=-1;
			while(pm<=n)
				pm<<=1;
			pm>>=1;

			for(int p=pm;p>0;p>>=1)
			{
				in=st|p;
				if(v[in]<a && in<=n)
				{
					st|=p;
				}
				else if(in<=n)
					poz=in;
			}
			cout<<poz<<'\n';
		}
	}


    return 0;
}