Cod sursa(job #2641479)
| Utilizator | Data | 11 august 2020 16:21:35 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.19 kb |
#include <stdio.h>
using namespace std;
int v[100001];
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n, m, i, x, y, poz;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &x);
v[i] = x;
}
for (scanf("%d", &m); m > 0; m--)
{
scanf("%d %h", &x, &y);
poz = -1;
if (x == 0)
{
i = n;
if (v[n / 2] > y)
i = n / 2;
for (; i > 0 && poz < 1; i--)
{
if (v[i] == y)
poz = i;
}
}
else if (x == 1)
{
i = n;
if (v[n / 2] > y)
i = n / 2;
for (; i > 0 && poz < 1; i--)
{
if (v[i] <= y)
poz = i;
}
}
else
{
i = 1;
if (v[n / 2] < y)
i = n / 2;
for (; i <= n && poz < 1; i++)
{
if (v[i] >= y)
poz = i;
}
}
printf("%d \n", poz);
}
return 0;
}
