Pagini recente » Cod sursa (job #1277410) | Cod sursa (job #1162117) | Cod sursa (job #2024884) | Cod sursa (job #2095180) | Cod sursa (job #2427841)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int caut(int n,int x,int v[])
{
int msk,poz=0;
for(msk=1<<20;msk>0;msk=msk/2)
if(poz+msk<=n&&v[poz+msk]<=x)
poz=poz+msk;
return poz;
}
int v[100001];
int main()
{
int n,i,cf,m,x,k=0,nr,p;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in>>nr;
for(i=1;i<=nr;i++)
{
in>>cf;
if(cf==0)
{
in>>x;
caut(n,x,v);
p=caut(n,x,v);
if(v[p]!=x)
out<<-1<<'\n';
else
{
while(v[p]==x)
p++;
out<<p-1<<'\n';
}
}
if(cf==1)
{
in>>x;
p=caut(n,x,v);
out<<p<<'\n';
}
if(cf==2)
{
in>>x;
p=caut(n,x,v);
while(v[p]<x)
p++;
out<<p<<'\n';
}
}
return 0;
}