Cod sursa(job #2212334)

Utilizator problem_destroyer69Daniel Hangan problem_destroyer69 Data 13 iunie 2018 20:30:33
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>
using namespace std;
#define int long long
//#define fin cin
//#define fout cout
int n,m,x,y;
int minim[18][100005];
signed main() {
    ifstream fin("rmq.in");
    ofstream fout("rmq.out");
    fin >> n >> m;
    for (int i = 1;i <= n;i++)
        fin >> minim[0][i];
    int pm = log2 (n);
    for (int i = 1;i <= pm;i++)
    for (int j = 1;j <= n-(1 << i)+1;j++){
        minim[i][j] = min(minim[i-1][j],minim[i-1][j+(1 << (i-1))]);
    }
    for (int i = 1;i <= m;i++){
        cin >> x >> y;
        int pmm = log2 (y-x+1);
        fout << min(minim[pmm][x],minim[pmm][y-(1 << pmm)+1]) << '\n';
    }
}