Pagini recente » Cod sursa (job #2641630) | Cod sursa (job #299934) | Cod sursa (job #2071896) | Cod sursa (job #1563078) | Cod sursa (job #402007)
Cod sursa(job #402007)
#include <stdio.h>
#include <algorithm>
#define Nmax 100005
using namespace std;
int n, m, i, k, q, x, y, sol;
int a[17][Nmax], v[Nmax], log[Nmax];
int main (){
FILE * f = fopen ("rmq.in", "r");
FILE * g = fopen ("rmq.out", "w");
fscanf (f, "%d %d", &n, &m);
for (i = 1 ; i <= n ; i++)
fscanf (f, "%d", &v[i]);
for (i = 1 ; i <= n ; i++)
a[0][i] = v[i];
for (k = 1 ; 1 << k <= n ; k++)
for (i = 1 ; i <= n - (1<<k) + 1 ; i++)
a[k][i] = min(a[k-1][i], a[k-1][i + (1<<(k-1))]);
for (i = 2 ; i <= n ; i++)
log[i] = log[i/2] + 1;
for (i = 1 ; i <= m ; i++){
fscanf(f, "%d %d", &x, &y);
q = log [y - x];
fprintf (g, "%d\n", min (a[q][x], a[q][y-(1<<q)+1]));
}
fclose(f);
fclose(g);
return 0;
}