Cod sursa(job #3181286)

Utilizator razviOKPopan Razvan Calin razviOK Data 6 decembrie 2023 20:06:30
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>

int Minimum(int a,int b){
    return (a<b) ? a:b;
}
void DynamicProgrammingSolution(int *arr,int N,int M){

    int **Dp=(int **) malloc(sizeof(int *)*N);
    for(int i=0;i<N;i++){
        Dp[i]=(int *) malloc(sizeof(int)*(N-i));
    }

    for(int i=0;i<N;i++)
        for(int j=i;j<N;j++){
            if(i==j) Dp[i][j]=arr[j];
            else Dp[i][j]= Minimum(Dp[i][j-1],arr[j]);
        }


    int a,b;
    for(int i=0;i<M;i++){
        scanf("%d",&a);
        scanf("%d",&b);
        printf("%d\n",Dp[a-1][b-1]);
    }

    for(int i=0;i<N;i++) {
        free(Dp[i]);
        Dp[i]=NULL;
    }

    free(Dp);
    Dp=NULL;


}
int main() {

    freopen("rmq.in","r",stdin);
    freopen("rmq.out","w",stdout);

    int N,M;
    scanf("%d",&N);
    scanf("%d",&M);
    int *arr=(int *) malloc(sizeof(int)*N);
    for(int i=0;i<N;i++)
        scanf("%d",&arr[i]);

    DynamicProgrammingSolution(arr,N,M);

    free(arr);
    return 0;
}