Pagini recente » Cod sursa (job #44670) | Cod sursa (job #1879872) | Cod sursa (job #3127624) | Cod sursa (job #1781413) | Cod sursa (job #1700207)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
const int N=100005;
const int M=100005;
int v[N],n,m,log;
int main()
{
//citire
in>>n;
for(int i=1; i<=n; i++)
in>>v[i];
//cautare binara generala
/* int rez=0;
int pas<<log;
while(pas!=0)
{
if(i+pas are proprietatea)
i+=pas;
pas/=2;
}*/
for(log=1; log<=n; log <<= 1);
in>>m;
int tip, elem;
for(int i=1; i<=m; i++)
{
int rez=0;
int pas=log;
in>>tip>>elem;
if(tip==0)
{
while(pas!=0)
{
if(rez+pas<=n && v[rez+pas] <= elem)
rez+=pas;
pas/=2;
}
if(v[rez] < elem)
out<<"-1"<<'\n';
else
out<<rez<<'\n';
}
if(tip==1)
{
while(pas!=0)
{
if(rez+pas<=n && v[rez+pas] <= elem)
rez+=pas;
pas/=2;
}
out<<rez<<'\n';
}
if(tip==2)
{
while(pas!=0)
{
if(rez+pas<=n && v[rez+pas] < elem)
{
rez+=pas;
}
pas/=2;
}
out<<rez+1<<'\n';
}
}
return 0;
}