Pagini recente » Cod sursa (job #1667028) | Cod sursa (job #1337369) | Cod sursa (job #2903983) | Cod sursa (job #2475832) | Cod sursa (job #2261098)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,a[100001],q,x,y;
void cautbin1(int k)
{
int poz=0;
for(int i=1<<30;i>0;i=i>>1)
{
if(poz+i<=n)
if(a[poz+i]<=k)
{
poz+=i;
}
}
if(a[poz]==k)out<<poz<<'\n';
else out<<-1<<'\n';
}
void cautbin2(int k)
{
int poz=0;
for(int i=1<<30;i>0;i=i>>1)
{
if(poz+i<=n)
if(a[poz+i]<=k)
{
poz+=i;
}
}
out<<poz<<'\n';
}
void cautbin3(int k)
{
int poz=0;
for(int i=1<<30;i>0;i=i>>1)
{
if(poz+i<=n)
if(a[poz+i]<k)
{
poz+=i;
}
}
out<<poz+1<<'\n';
}
int main()
{
in>>n;
for(int i=1;i<=n;i++)
{
in>>a[i];
}
in>>q;
for(int i=1;i<=q;i++)
{
in>>x>>y;
if(x==0)cautbin1(y);
if(x==1)cautbin2(y);
if(x==2)cautbin3(y);
}
return 0;
}