Cod sursa(job #441766)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 13 aprilie 2010 12:07:38
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<fstream>
#include<vector>
#include<algorithm>
#include<cstdio>
#define pb push_back
#define infi 2147483647
using namespace std;

int n, m;
vector<int> v;
vector<int>::iterator it;

int main()
{
    int i, op, x;
    ifstream fin("cautbin.in");
    freopen("cautbin.out", "w", stdout);
    fin>>n;
    for(i=1;i<=n;++i)
        fin>>x, v.pb(x);
    fin>>m;
    for(i=1;i<=m;++i)
    {
        fin>>op>>x;
        if(!op)
        {
            it=find(v.begin(), v.end(), x);
            if(it!=v.end())
            {
                //while(*(++it)==x);
                printf("%d\n", it-v.begin());
            }
            else
                printf("-1\n");
        }
        else if(op==1)
        {
            it=upper_bound(v.begin(), v.end(), x);
            printf("%d\n", it-v.begin());
        }
        else
        {
            it=lower_bound(v.begin(), v.end(), x);
            printf("%d\n", it+1-v.begin());
        }
    }
    return 0;
}