Pagini recente » Cod sursa (job #1584530) | Cod sursa (job #1471058) | Cod sursa (job #1207568) | Cod sursa (job #2221356) | Cod sursa (job #2245792)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N, Q, step;
int v[100005];
void Binary_Search1(int value)
{
int i, pas = step;
for(i = 1; pas; pas >>= 1)
if(i + pas <= N && v[i + pas] <= value)
i += pas;
if(v[i] == value)
fout << i << '\n';
else
fout << -1 << '\n';
}
void Binary_Search2(int value)
{
int i, pas = step;
for(i = 1; pas; pas >>= 1)
if(i + pas <= N && v[i + pas] <= value)
i += pas;
fout << i << '\n';
}
void Binary_Search3(int value)
{
int i, pas = step;
for(i = N; pas; pas >>= 1)
if(i - pas >= 1 && v[i - pas] >= value)
i -= pas;
fout << i << '\n';
}
int main()
{
fin >> N;
for(int i = 1; i <= N; i++)
fin >> v[i];
step = 1;
for(; step < N; step <<= 1);
fin >> Q;
int type, x;
for(int i = 1; i <= Q; i++)
{
fin >> type >> x;
if(type == 0)
Binary_Search1(x);
else if(type == 1)
Binary_Search2(x);
else
Binary_Search3(x);
}
return 0;
}