Cod sursa(job #579202)

Utilizator Sm3USmeu Rares Sm3U Data 11 aprilie 2011 22:04:30
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

int n;
int a[100100];
int m;

void citire()
{
    scanf("%d",&n);
    for(int i=0;i<n;++i)
        scanf("%d",&a[i]);
    scanf("%d",&m);
}

int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    citire();
    while(m--)
    {
        int x;
        int y;
        scanf("%d %d",&x,&y);
        int z;
        switch(x)
        {
            case 0:
                    z=upper_bound(a,a+n,y)-a-1;
                    if(z>=0 && z<n &&a[z]==y)
                        printf("%d\n",z+1);
                    else
                        printf("-1\n");
                    break;
            case 1:
                    z=lower_bound(a,a+n,y+1)-a-1;
                    printf("%d\n",z+1);
                    break;
            default:
                    z=upper_bound(a,a+n,y-1)-a;
                    printf("%d\n",z+1);
                    break;
        }

    }
    return 0;
}