Pagini recente » Cod sursa (job #3225965) | Cod sursa (job #737430) | Cod sursa (job #2792452) | Cod sursa (job #2769320) | Cod sursa (job #3181286)
#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;
}