Cod sursa(job #1229440)

Utilizator valexVochescu Alexandru valex Data 17 septembrie 2014 10:45:58
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int i, n, v[100001], q, x, y, m;

int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++)
        scanf("%d",&v[i]);
    sort(v+1,v+n+1);
    scanf("%d",&m);
    for (i=1;i<=m;i++)
    {
        scanf("%d %d",&q,&y);
        if (q==0)
        {
            x = upper_bound(v+1, v+n+1, y)-v-1;
            if ((x>=1 && x<=n) && (v[x]==y))
            {
                printf("%d\n", x);
            }
            else printf("-1\n");
        }
        else if (q==1)
        {
            x = lower_bound(v+1, v+n+1, y+1)-v-1;
            printf("%d\n",x);
        }
        else
        {
            x=upper_bound(v+1, v+n+1, y-1) - v;
            printf("%d\n",x);
        }
    }
    return 0;
}