Pagini recente » Cod sursa (job #2258567) | Cod sursa (job #1566045) | Cod sursa (job #457791) | Cod sursa (job #2990515) | Cod sursa (job #945890)
Cod sursa(job #945890)
#include <fstream>
using namespace std;
int step,n,i,m,val,u,a[100001],tip,x,j;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
void citire( )
{
f>>n;
for (i=1;i<=n;i++)
f>>a[i];
}
int main()
{
citire();
f>>m;
for (step = 1; step <= n; step <<= 1);
for (; m; --m)
{
f>>tip>>x;
if (tip < 2)
{
for (u = step, i = 0; u; u >>= 1)
if (i + u <= n && a[i + u] <= x)
i += u;
if (!tip && a[i] != x)
g<<"-1"<<'\n';
else
g<<i<<'\n';
}
else {
for (u = step, i = n; u; u >>= 1)
if (i - u > 0 && a[i - u] >= x)
i -= u;
g<<i<<'\n';
}
}
return 0;
}