Cod sursa(job #1193256)

Utilizator ZenusTudor Costin Razvan Zenus Data 31 mai 2014 13:12:28
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

vector < int > :: iterator upper,lower;
vector < int > V;

void Read()
{
    int M,i,N,X,type,P;

    scanf("%d",&N);
    for (i=1;i<=N;++i)
    {
        scanf("%d",&X);
        V.push_back(X);
    }
    sort(V.begin(),V.end());

    scanf("%d",&M);
    while (M--)
    {
        scanf("%d%d",&type,&X);

        if (type==0)
        {
            upper = upper_bound(V.begin(),V.end(),X);
            P=upper-V.begin();

            if (P>=1 && P<=N && V[P-1]==X)
            {
                printf("%d\n",P);
                continue;
            }

            printf("-1\n");
            continue;
        }

        if (type==1)
        {
            lower = lower_bound(V.begin(),V.end(),X+1);
            P=lower-V.begin();

            printf("%d\n",P);
            continue;
        }

        upper = upper_bound(V.begin(),V.end(),X-1);
        P=upper-V.begin()+1;

        printf("%d\n",P);
    }
}

int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);

Read();

return 0;
}