Cod sursa(job #1966778)

Utilizator mateibanuBanu Matei Costin mateibanu Data 15 aprilie 2017 16:14:08
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#include <algorithm>
#include <math.h>

using namespace std;

#define MAX 2000000

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

int a[20][100010],v[100010];
int n,m;

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