Cod sursa(job #1935197)

Utilizator Tudor_CandeaCandea Tudor Tudor_Candea Data 22 martie 2017 08:00:40
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;
int n,m;
vector <int> sol;
vector <int>::iterator low,up;
int main()
{
    freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);
    scanf("%d", &n);
    int x;
    for(int i=1;i<=n;i++)
    {
        scanf("%d", &x);

        sol.push_back(x);
    }
    scanf("%d", &m);
    int y;
    for(int i=1;i<=m;i++)
    {
        scanf("%d %d", &x, &y);
        if(x==0)
        {
            up =upper_bound (sol.begin(), sol.end(), y);
            if((up -sol.begin())==n and sol[n-1]!=y)
                printf("%d\n", -1);
            else
                printf("%d\n", (up -sol.begin()));
        }
        if(x==1)
        {
            up =upper_bound (sol.begin(), sol.end(), y);
            printf("%d\n", (up -sol.begin()));
        }
        if(x==2)
        {
            low=lower_bound (sol.begin(), sol.end(), y);
            printf("%d\n", (low -sol.begin()+1));
        }
    }
    return 0;
}