Pagini recente » Cod sursa (job #2579343) | Cod sursa (job #2534971) | Cod sursa (job #670825) | Cod sursa (job #2916353) | Cod sursa (job #3141197)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int a[100003], m, n, i, q, x;
int lwrbnd(int st, int dr, int val)
{
while(st<dr)
{
int mij=(st+dr)/2;
if(a[mij]<val) st=mij+1;
else dr=mij;
}
}
int upprbnd(int st, int dr, int val)
{
while(st<dr)
{
int mij=(st+dr+1)/2;
if(a[mij]<val) st=mij+1;
else dr=mij;
}
return a[mij];
}
int main()
{
cin>>n;
for(i=1;i<=n;++i)
cin>>a[i];
cin>>m;
for(i=0;i<=m;++i)
{
cin>>q>>x;
if(q==1) cout<<upprbnd(1, n, x)<<'\n';
else if(q==2) cout<<lwrbnd(1, n, x)<<'\n';
else
{
bool ok=0;
for(int j=n;j>=0;--j)
if(a[j]==x)
cout<<j<<'\n', ok=1;
if(ok==0)
cout<<-1<<'\n';
}
}
}