Pagini recente » Cod sursa (job #1448439) | Cod sursa (job #2775772) | Cod sursa (job #2084247) | Cod sursa (job #1441046) | Cod sursa (job #1321031)
#include <fstream>
using namespace std;
int N, A[15], j, M, Q, y, Nr,k ,ok;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int bsu(int val)
{
int i, step;
for (step = 1; step < N; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < N && A[i + step] <= val)
i += step;
return i;
}
int bsl(int val)
{
int i, step;
for (step = 1; step < N; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < N && A[i + step] < val)
i += step;
return i+1;
}
int main()
{
f>>N;
for(j=1 ; j<=N ; j++)
f>>A[j];
f>>M;
for(j=0 ; j<M ; j++)
{
f>>Q;
f>>Nr;
if(Q==0)
{
y=bsu(Nr);
if(A[y]==Nr)
g<<y<<'\n';
else
g<<-1<<'\n';
}
if(Q==1)
{
for(k=Nr ; k>0 && ok==0 ; k--)
{
y=bsu(k);
if(A[y]==k)
{
g<<y<<'\n';
ok=1;
}
}
}
ok=0;
if(Q==2)
{
for(k=Nr ; k>0 && ok==0 ; k--)
{
y=bsl(k);
if(A[y]==k)
{
g<<y<<'\n';
ok=1;
}
}
}
}
return 0;
}