Pagini recente » Cod sursa (job #2785579) | Cod sursa (job #3209264) | Cod sursa (job #422867) | Cod sursa (job #1459853) | Cod sursa (job #1966890)
#include <fstream>
using namespace std;
int n, q, st, dr, l, log[100001], m[18][100001];
void dp () {
int lp;
for (int l = 1; (lp = (1 << l)) <= n; l++)
for (int c = 1; c+lp-1 <= n; c++)
m[l][c] = min(m[l-1][c], m[l-1][c+lp/2]);
}
int main () {
ifstream fi("rmq.in");
ofstream fo("rmq.out");
fi >> n >> q;
for (int i = 1; i <= n; i++)
fi >> m[0][i];
dp();
log[1] = 0;
for (int i = 2; i <= n; i++)
log[i] = log[i/2]+1;
for (int i = 1; i <= q; i++) {
fi >> st >> dr;
l = log[dr-st+1];
fo << min(m[l][st], m[l][dr - (1 << l)]) << '\n';
}
return 0;
}