Pagini recente » Cod sursa (job #1964944) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2130247) | Cod sursa (job #1182274)
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,a[100005],m;
int main()
{
int x, y, i, k;
f >> n;
for ( i = 1; i <= n; i++ )
f >> a[i];
f >> m;
for ( int j = 1; j <= m; j++)
{
f >> x >> y;
if ( x == 0 )
{
for ( k = 1;k <= n; k <<=1 );
for ( i = 0; k ; k >>=1)
if (i+k<=n && a[i+k]<=y)
i+=k;
if (a[i]==y)
g<<i<<"\n";
else g<<"-1\n";
}
if (x==1)
{
for ( k=1;k<=n;k<<=1);
for ( i=0;k;k>>=1)
if (i+k<=n && a[i+k]<=y)
i+=k;
g<<i<<"\n";
}
if (x==2)
{
for ( k=1;k<=n;k<<=1);
for ( i=n;k;k>>=1)
if (i-k>=1 && a[i-k]>=y)
i-=k;
g<<i<<"\n";
}
}
return 0;
}