Cod sursa(job #1166904)

Utilizator smallOneAdina Mateescu smallOne Data 3 aprilie 2014 22:36:22
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
/*
ID: adinama1
PROG: test
LANG: C++
*/

#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <ctype.h>
#include <cstring>
#include <string>
#include <ctime>
#include <cassert>
#include <utility>

using namespace std;

#define LIM 100005

int v[LIM];

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

	int n, m, op, num;

	cin >> n;
    for(int i = 0; i < n; ++i) {
        cin >> v[i];
    }
	cin >> m;
	for(int i = 0; i < m; ++i) {
        cin >> op >> num;
        switch(op) {
            case 0: if(binary_search(v, v + n, num)) {
                        cout << upper_bound(v, v + n, num) - v << endl; // cea mai mare poz pe care se afla un element = num
                    } else
                        cout << -1 << endl;
                break;
            case 1: cout << lower_bound(v, v + n, num + 1) - v << endl; // cea mai mare poz pe care se afla un element <= num
                break;
            default: cout << upper_bound(v, v + n, num - 1) - v + 1 << endl; // cea mai mica poz pe care se afla un element >= num
        }
	}
    return 0;
}