Cod sursa(job #2145028)

Utilizator tanasaradutanasaradu tanasaradu Data 27 februarie 2018 01:20:01
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
const int Nmax = 100005;
unordered_map < int , int > MN , MX;
set < int > s;
set < int > :: iterator it;
int n , Q;
int main()
{
    int x , op;
    fin >> n;
    for(int i = 1 ; i <= n ; i++)
    {
        fin >> x;
        if(MN[x] == 0)
            MN[x] = i;
        else MN[x] = min(MN[x] , i);
        if(MX[x] == 0)
            MX[x] = i;
        else MX[x] = max(MX[x] , i);
        s . insert(x);
    }
    fin >> Q;
    while(Q -- )
    {
        fin >> op >> x;
        if(op == 0)
        {
            if(MX[x] == 0)
                fout << "-1\n";
            else fout << MX[x] << "\n";
        }
        else if(op == 1)
        {
            it = s . upper_bound(x);
            it--;
            fout << MX[* it] << "\n";
        }
        else
        {
            it = s . lower_bound(x);
            fout << MN[* it] << "\n";
        }
    }
    fin.close();
    fout.close();
    return 0;
}