Pagini recente » Cod sursa (job #2903298) | Cod sursa (job #2926807) | Cod sursa (job #400826) | Cod sursa (job #2615303) | Cod sursa (job #1542135)
// infoarenaDFSnonRec.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <fstream>
#define MaxN 100005
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N, M;
int val[MaxN];
int rmq[MaxN][MaxN / 100];
int lg[MaxN];
int min(int a, int b) {
return a < b ? a : b;
}
int main() {
fin >> N >> M;
lg[1] = 0;
fin >> val[1];
for (int i = 2; i <= N; ++i) {
fin >> val[i];
lg[i] = lg[i / 2] + 1;
}
for (int i = 1; i <= N; ++i)
rmq[i][0] = val[i];
for (int i = 1; (1 << i) <= N; ++i) {
int l = (1 << (i - 1));
for (int j = 1; j + (1 << i) - 1 <= N ; ++j) {
rmq[j][i] = min(rmq[j][i-1], rmq[j + l][i-1]);
}
}
for (int i = 1; i <= M; ++i) {
int a, b;
fin >> a >> b;
int diff = b - a + 1;
int l = lg[diff];
fout << min(rmq[a][l], rmq[b - (1 << l) + 1][l]) << '\n';
}
return 0;
}