Cod sursa(job #2368325)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 5 martie 2019 15:31:03
Problema Range minimum query Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <bits/stdc++.h>
#define NMAX 100000

using namespace std;

FILE*f=fopen("rmq.in","r");
FILE*g=fopen("rmq.out","w");

int a[NMAX][20],n,m;

int query(int x,int y) {
    int k;
    k=log2(y-x+1);
    return min(a[x][k],a[y-(1<<k)+1][k]);
}

int main() {
    int i,j,x,y;
    fscanf(f,"%d%d",&n,&m);
    for (i=1;i<=n;i++) fscanf(f,"%d",&a[i][0]);
    for (i=1;(1<<i)<=n;++i)
        for (j=1;j+(1<<i)-1<=n;j++)
            a[j][i]=min(a[j][i-1],a[j+(1<<(i-1))][i-1]);
    for (i=1;i<=m;i++) {
        fscanf(f,"%d%d",&x,&y);
        fprintf(g,"%d\n",query(x,y));
    }
    return 0;
}