Cod sursa(job #2164799)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 13 martie 2018 09:52:38
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");

int n,mm,a[100005],rad,b[100005];

int interog(int x,int y) {
    int i,j,k=a[x];
    for (i=x;i<=rad*((x-1)/rad);i++)
        k=min(a[i],k);
    for (i=(x-1)/rad+1;i<(y-1)/rad;i++)
        k=min(k,b[i]);
    for (i=rad*((y-1)/rad)+1;i<=y;i++)
        k=min(a[i],k);
    return k;
}

int main() {
    int i,j,x,y;
    f>>n>>mm;
    rad=sqrt(n);
    for (i=1;i<=n;i++) {
        f>>a[i];
        b[(i-1)/rad+1]=(b[(i-1)/rad+1]==0)?a[i]:min(a[i],b[(i-1)/rad+1]);
    }
    for (i=1;i<=mm;i++) {
        f>>x>>y;
        g<<interog(x,y)<<'\n';
    }
    return 0;
}