Pagini recente » Cod sursa (job #176599) | Cod sursa (job #1408158) | Cod sursa (job #2803529) | Cod sursa (job #1783895) | Cod sursa (job #3181307)
#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 = 0; j < N - i; j++) {
if (j == 0) Dp[i][j] = arr[i];
else Dp[i][j] = Minimum(Dp[i][j - 1], arr[i+j]);
}
// for (int i = 0; i < N; i++){
// for (int j = 0; j < N - i; j++)
// printf("%d ",Dp[i][j]);
// printf("\n");
//}
int a,b;
for(int i=0;i<M;i++){
scanf("%d",&a);
scanf("%d",&b);
printf("%d\n",Dp[a-1][b-a]);
}
for(int i=0;i<N;i++) {
free(Dp[i]);
}
free(Dp);
}
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;
}