Mai intai trebuie sa te autentifici.
Cod sursa(job #694554)
Utilizator | Data | 27 februarie 2012 21:43:26 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.91 kb |
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
int *v;
int main ()
{
int n, m, x, i, t, k;
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
v = new int[n+1];
for (i = 1; i <= n; ++ i)
scanf("%d", &v[i]);
scanf("%d", &m);
for(i = 0; i < m; i++)
{
scanf("%d %d", &t, &k);
switch(t)
{
case 0:
x = upper_bound(v + 1, v + n + 1, k) - v - 1;
if(x <= n && x > 0 && v[x] == k)
printf("%d\n", x);
else
printf("-1\n");
continue;
case 1:
x = lower_bound(v + 1, v + n + 1, k + 1) - v - 1;
printf("%d\n", x);
continue;
case 2:
x = upper_bound(v + 1, v + n + 1, k - 1) - v;
printf("%d\n", x);
continue;
}
}
}