Pagini recente » Cod sursa (job #722027) | Cod sursa (job #1359103) | Cod sursa (job #17393) | Cod sursa (job #1477520) | Cod sursa (job #583190)
Cod sursa(job #583190)
#include <fstream>
#include <iostream>
using namespace std;
int s[100003];
int n,m;
int main()
{
int i;
ifstream in("cautbin.in");
in>>n;
for(i=0;i<n;i++)
in>>s[i];
int step;
for(step=1;step<n;step<<=1);
ofstream out("cautbin.out");
in>>m;
int op,x,Log;
for(;m;--m)
{
in>>op>>x;
if(op==1||op==0)
{
Log=step;
for(i=0;Log;Log>>=1)
if(i+Log<n&&s[i+Log]<=x)
i+=Log;
if(op==0&&s[i]==x)
out<<i+1<<'\n';
else if(op==0&&s[i]!=x)out<<'-1\n';
if(op==1)out<<i+1<<'\n';
}
if(op==2)
{
Log=step;
for(i=n-1;Log;Log>>=1)
if(i-Log>=0&&s[i-Log]>=x)i-=Log;
out<<i+1<<'\n';
}
}
in.close();out.close();
return 0;
}