Cod sursa(job #2626800)

Utilizator etohirseCristi Cretu etohirse Data 8 iunie 2020 13:49:40
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#include <bits/stdc++.h>
	
using namespace std;
	
fstream fin("cautbin.in");
	
ofstream fout("cautbin.out");
	
int main()
	
{
	
    int n, m;
	
    fin >> n;
	
    vector<int> v(n + 10);
	
    for (int i = 1; i <= n; ++i)
	
        fin >> v[i];
	
    fin >> m;
	
    int x, y;
	
    for (int i = 1; i <= m; ++i)
	
    {
	
        fin >> x >> y;
	
        int s = 1, d = n, mid, rez;
	
        if (x == 2)
	
        {
	
            while (s <= d)
	
            {
	
                mid = s + (d - s) / 2;
	
                if (v[mid] < y)
	
                    s = mid + 1;
	
                else
	
                {
	
                    rez = mid;
	
                    d = mid - 1;
	
                }
	
            }
	
            fout << rez;
	
        }
	
        else
	
        {
	
            while (s <= d)
	
            {
	
                mid = s + (d - s) / 2;
	
                if (v[mid] <= y)
	
                {
	
                    rez = mid;
	
                    s = mid + 1;
	
                }
	
                else
	
                    d = mid - 1;
	
            }
	
            if (x == 0)
	
            {
	
                if (v[rez] != y)
	
                    fout << -1;
	
                else fout << rez;
	
            }
	
            else fout << rez;
	
        }
	
        fout << "\n";
	
    }
	
}