Pagini recente » Cod sursa (job #1052965) | Cod sursa (job #2208100) | Cod sursa (job #404706) | Cod sursa (job #1422985) | Cod sursa (job #583195)
Cod sursa(job #583195)
#include <fstream>
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==0)
{
Log=step;
i=0;
for(;Log;Log>>=1)
if(i+Log<n&&s[i+Log]<=x)
i+=Log;
if(x==s[i])
out<<i+1<<'\n';
else out<<"-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';
}
if(op==1)
{
Log=step;
for(i=0;Log;Log>>=1)
if(i+Log<n&&s[i+Log]<=x)
i+=Log;
out<<i+1<<'\n';
}
}
in.close();out.close();
return 0;
}