Pagini recente » Cod sursa (job #263107) | Cod sursa (job #2889456) | Cod sursa (job #2196382) | Cod sursa (job #1937194) | Cod sursa (job #3217352)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int sp[100001][105], lg[100001];
int main()
{
int n, m, i, j, k, a, b, len;
fin >> n >> m;
for(i = 2; i < 100001; i++){
lg[i] = 1 + lg[i / 2];
}
for(i = 0; i < n; i++){
fin >> sp[i][0];
}
for(j = 1; j <= lg[n]; j++){
for(i = 0; i + (1 << j) <= n; i++){
sp[i][j] = min(sp[i][j - 1], sp[i + (1 << (j - 1))][j - 1]);
}
}
for(i = 0; i < m; i++){
fin >> a >> b;
a--;
b--;
len = b - a + 1;
k = lg[len];
a = min(sp[a][k], sp[b - (1 << k) + 1][k]);
fout << a << "\n";
}
return 0;
}