Pagini recente » Cod sursa (job #1160976) | Cod sursa (job #2495995) | Cod sursa (job #2020968) | Cod sursa (job #593820) | Cod sursa (job #1083071)
//Include
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *in, *out;
const int sz = (int)1e5+1;
//Variabile
int elements, questions;
int rmq[18][sz];
int Log[sz];
//Main
int main()
{
in=fopen("rmq.in", "rt");
out=fopen("rmq.out", "wt");
fscanf(in, "%d%d", &elements, &questions);
for(int i=1; i<=elements; ++i)
fscanf(in, "%d", &rmq[0][i]);
for(int i=2; i<=elements; ++i)
Log[i] = Log[i/2]+1;
for(int i=1; i<=Log[elements]; ++i)
for(int j=1 ; j<=elements - (1<<i)+1 ; ++j)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + (1<<(i-1))]);
int left, right;
while(questions--)
{
fscanf(in, "%d%d", &left, &right);
int line = Log[right - left + 1];
fprintf(out, "%d\n", min(rmq[line][left], rmq[line][right - (1<<line) + 1]));
}
fclose(in);
fclose(out);
return 0;
}