Cod sursa(job #3031726)

Utilizator popardaandrei3490Popirda Andrei-Eusebiu popardaandrei3490 Data 20 martie 2023 17:49:17
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.65 kb
#include <fstream>

using namespace std;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

int main()
{
    int n, v[100002], m;
    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> v[i];
    cin >> m;
    int i = 0;
    while(i < m){
        int x, var;
        cin >> var >> x;
        if(var == 0){
            i++;
            int st = 1, dr = n, last;
            while(st <= dr){
                int mid = (st + dr) / 2;
                if(v[mid] < x){
                    dr = mid - 1;
                }
                else if(v[mid] == x){
                    last = mid;
                    st = mid + 1;
                }
                else
                    st = mid + 1;
            }
            if(last)
                cout << last << "\n";
            else cout << -1;
        }


        if(var == 1){
            i++;
            int st = 1, dr = n, last;
            while(st <= dr){
                int mid = (st + dr) / 2;
                if(v[mid] <= x){
                    last = mid;
                    st = mid + 1;
                }
                else
                    dr = mid - 1;
            }
            cout << last << "\n";
        }


        if(var == 2){
            i++;
            int st = 1, dr = n, last;
            while(st <= dr){
                int mid = (st + dr) / 2;
                if(v[mid] >= x){
                    last = mid;
                    dr = mid - 1;
                }
                else{
                    st = mid + 1;
                }
            }
            cout << last << "\n";
        }
    }
    return 0;
}