Pagini recente » Cod sursa (job #279592) | Cod sursa (job #3188783)
#include <fstream>
#include <iostream>
using namespace std;
int v[100001],n,m,x,p;
int cb3(int x)
{
int l=0, e=17;
while(e>=0)
{
if(l+(1<<e)<=n && v[l+(1<<e)]<=x)
{
l+=1<<e;
}
e--;
}
return l;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(int i=1; i<=n; i++) fin>>v[i];
fin>>m;
for(int i=1; i<=m; i++)
{
fin>>p>>x;
if(p==0){
int q=cb3(x);
if(v[q]==x) fout<<q<<'\n';
else fout<<-1<<'\n';
}
else if(p==1){
fout<<cb3(x)<<'\n';
}
else{
int q=cb3(x);
if(v[q]==x)
{
while(v[q]==x) q--;
}
fout<<q+1<<'\n';
}
}
return 0;
fin.close();
fout.close();
}