Pagini recente » Cod sursa (job #829660) | Profil Senorita | Cod sursa (job #2080820) | Cod sursa (job #2822087) | Cod sursa (job #1953440)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[16][100005], i, j, n, m;
int lg[100005], diff, Log, x, y;
int main() {
f >> n >> m;
for (i = 2; i <= n+1; i++)
f >> rmq[0][i-1], lg[i] = lg[i/2]+1;
for (i = 1; (1 << i) <= n; i++) {
for (j = 1; j + (1<<i) -1<= n; j++)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j+ (1<<(i-1))]);
}
for (i = 1; i <= m; i++) {
f >> x >> y;
diff = (y-x+1);
Log = lg[diff];
g << min(rmq[Log][x], rmq[Log][x+diff-(1<<Log)]) << '\n';
}
return 0;
}