Cod sursa(job #2570610)

Utilizator cristicretuCristi Cretu cristicretu Data 4 martie 2020 18:00:28
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#include <bits/stdc++.h>
#define ll unsigned long long
#define in ios_base::sync_with_stdio(0); fin.tie(NULL); fout.tie(NULL);
#define out return 0;
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, i, x, task, v[100000];
int main()
{
    in
    fin >> n;

    for (i = 1; i <= n; ++i)
        fin >> v[i];

    fin >> m;
    while (m--)
    {
        fin >> task >> x;
        int st = 1, dr = n, sol = -1;
        if (task == 0 || task == 1)
        {
            while (st <= dr)
            {
            int mid = st + (dr - st) / 2;
            if (v[mid] <= x)
            {
                sol = mid;
                st = mid + 1;
            }
            else
                dr = mid - 1;
            }
            if (task == 0)
            {
                if (v[sol] == x) fout << sol << "\n";
                else fout << -1 << "\n";
            }
            if (task == 1)
                fout << sol << "\n";
        }

        if (task == 2)
        {
            while (st <= dr)
            {
            int mid = st + (dr - st) / 2;
            if (v[mid] >= x)
            {
                sol = mid;
                dr = mid - 1;
            }
            else
                st = mid + 1;
            }
            fout << sol << "\n";
        }
    }
    out
}