Pagini recente » Cod sursa (job #3341498) | Cod sursa (job #758125) | Cod sursa (job #2561643) | Cod sursa (job #2316929) | Cod sursa (job #1749289)
#include<stdio.h>
#define LOG_N 17
FILE *in, *out;
int d[LOG_N + 1][100000];
int miiin(int a, int b)
{
if(a < b) {
return a;
} else {
return b;
}
}
int main ()
{
int n, m ,i, j;
in = fopen("rmq.in", "r");
out = fopen("rmq.out", "w");
fscanf(in, "%d%d", &n, &m);
for(i = 0; i < n; i++) {
fscanf(in, "%d", &d[0][i]);
}
int pas = 1;
for(i = 1; i <= LOG_N; i++) {
for(j = 0; j < n; j++) {
if(j + pas < n) {
d[i][j] = miiin(d[i - 1][j], d[i - 1][j + pas]);
} else {
d[i][j] = d[i - 1][j];
}
}
pas = pas << 1;
}
/*
for(i = 0; i <= 3; i++) {
for(j = 0; j < n; j++) {
printf("%d ", d[i][j]);
} printf("\n");
}
*/
int a, b, e, l;
for(i = 0; i < m; i++) {
fscanf(in, "%d%d", &a, &b);
e = 1;
l = 0;
while((e << 1) <= (b - a + 1)) {
e = e << 1;
l++;
}
fprintf(out, "%d\n", miiin(d[l][a - 1], d[l][b - e]));
}
fclose(in);
fclose(out);
return 0;
}