Cod sursa(job #1585799)

Utilizator pitbull007Hurmuzache Ciprian pitbull007 Data 31 ianuarie 2016 14:48:56
Problema Range minimum query Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <stdlib.h>

int v[10000], N, M, RMQ[10000][10000];

int RMQ_1() {
    int i,j;
    for(i=1;i<=N;i++) {
        RMQ[i][i] = i;
    }
    for(i=1;i<=N;i++) {
        for(j=i+1;j<=N;j++) {
            if(v[RMQ[i][j-1]] < v[j]) {
                RMQ[i][j] = RMQ[i][j-1];
            } else {
                RMQ[i][j] = j;
            }
        }
    }


}


int main(void) {
    FILE *fin,*fout;
    int i,x,y;

    fin = fopen("rmq.in","r");
    fout = fopen("rmq.out","w");

    fscanf(fin,"%d %d",&N,&M);

    for(i=1;i<=N;i++) {
        fscanf(fin,"%d",&v[i]);
    }
    RMQ_1();
    while(M--) {
        fscanf(fin,"%d%d",&x,&y);
        printf("%d ",v[RMQ[x][y]]);
        fprintf(fout,"%d\n",v[RMQ[x][y]]);
    }



    return 0;
}