Pagini recente » Cod sursa (job #3288332) | Cod sursa (job #1893363) | Cod sursa (job #3307380) | Cod sursa (job #741704) | Cod sursa (job #3300768)
#include <bits/stdc++.h>
#define log ieurfherifhu
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int DIM = 100001;
int log[DIM];
int rmq[int(log2(DIM)) + 1][DIM];
int n, q, v[DIM], i, j, st, dr;
int main()
{
fin >> n >> q;
for(i = 1; i <= n; i++)
fin >> v[i];
for(i = 1; i <= n; i++)
rmq[0][i] = v[i];
for(i = 1; (1 << i) <= n; i++){
for(j = 1; j <= n; j++){
int k = (1 << (i - 1)) + j;
rmq[i][j] = rmq[i-1][j];
if(k <= n)
rmq[i][j] = min(rmq[i][j], rmq[i - 1][k]);
}
}
// log[i] = def = cea mai mare putere a lui 2 <= i
for(i=2;i<=n;i++)
log[i] = log[i / 2] + 1;
while(q--){
fin >> st >> dr;
int len = log[dr - st + 1];
fout<< min(rmq[len][st], rmq[len][dr - (1 << len) + 1]) << "\n";
}
return 0;
}