Pagini recente » Cod sursa (job #2739601) | Cod sursa (job #2577306) | Cod sursa (job #2324205) | Cod sursa (job #2338994) | Cod sursa (job #1423713)
#include <fstream>
#define maxim 100010
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int N,M,type,x,LogN,q,lg,V[maxim];
void read_data()
{
in>>N;
for(int i=0;i<N;in>>V[++i]);
in>>M;
}
void solve()
{
for(LogN=1;LogN<=N;LogN<<=1);
while(M--)
{
in>>type>>x;
switch(type)
{
case 2:
{
for(lg=LogN,q=N;lg;lg>>=1)
if(q-lg>0 and V[q-lg]>=x)
q-=lg;
out<<q<<'\n';
break;
}
default:
{
for(lg=LogN,q=0;lg;lg>>=1)
if(q+lg<=N and V[q+lg]<=x)
q+=lg;
if(!type and V[q]!=x) out<<"-1\n";
else out<<q<<'\n';
}
}
}
}
int main()
{
read_data();
solve();
return 0;
}