Cod sursa(job #2683294)

Utilizator Mihaela...Mihaela Zmeu Mihaela... Data 10 decembrie 2020 21:01:23
Problema Range minimum query Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include "bits/stdc++.h"

using namespace std;

int main()
{
    ifstream cin("rmq.in");
    ofstream cout("rmq.out");

    int n, m;
    cin >> n >> m;
    vector<int> v(n);
    vector<int> ab;
    int d = 100;
    for(int i = 0; i < n; i++) {
        cin >> v[i];
        if(i % d == 0) {
            ab.push_back(v[i]);
        }
        else {
            if(ab[ab.size() - 1] > v[i]) {
                ab[ab.size() - 1] = v[i];
            }
        }
    }

    for ( int i = 0 ; i < m; i++) {
        int s = 1000001;
        int a, b;
        cin >> a >> b;
        a--;
        b--;
        int e = a;
        while(e % d != 0 && e <= b){
            if(s > v[e]){
                s = v[e];
            }
            e++;
        }
        while(e + d <= b){
            if(s > ab[e / d]){
                s = ab[e / d];
            }
            e+=d;
        }
        while(e <= b){
            if(s > v[e]){
                s = v[e];
            }
            e++;
        }

        cout << s << '\n';
    }
    return 0;
}