Pagini recente » Cod sursa (job #2242330) | Cod sursa (job #138487) | Cod sursa (job #801974) | Istoria paginii utilizator/nissan_lucino | Cod sursa (job #3217175)
#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 = 0; i < n; i++){
fin >> sp[i][0];
}
for(i = 2; i <= 100001; i++){
lg[i] = 1 + lg[i / 2];
}
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[i][k], sp[b + 1 - (1 << k)][k]);
fout << a << "\n";
}
return 0;
}