Pagini recente » Cod sursa (job #2529448) | Cod sursa (job #2136313) | Cod sursa (job #3281167) | Cod sursa (job #1455002) | Cod sursa (job #474105)
Cod sursa(job #474105)
#include <fstream>
using namespace std;
int v[1<<17],n;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int bs(int x)
{
int i,step=1<<16;
for (i=0;step;step>>=1)
if (i+step<=n && v[i+step]<=x)
i+=step;
return i;
}
int work(int a,int x)
{
if (a==1)
return bs(x);
if (a==2)
return bs(x-1)+1;
a=bs(x);
if (v[a]==x)
return a;
return -1;
}
int main()
{
int m,a,x;
in>>n;
for (int i=1;i<=n;i++)
in>>v[i];
in>>m;
while (m--)
{
in>>a>>x;
out<<work(a,x)<<"\n";
}
return 0;
}