Pagini recente » Cod sursa (job #2858685) | Cod sursa (job #684166) | Cod sursa (job #1015244) | Cod sursa (job #2227193) | Cod sursa (job #1248884)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int nmax = 100006;
int d[18][nmax], n, m, lgsup[nmax], x, y, rasp, dif, chestie;
int main(){
int player_unu=0;
in>>n>>m;
for(int i = 1; i<=n; i++)
{
in>>d[0][i];
}
for(int i = 1; i<=17; i++)
for(int j = 1; j<=n - (1<<i) + 1; j++)
d[i][j] = min(d[i - 1][j], d[i - 1][j + (1<<(i - 1))]);
for(int i = 2; i<=n; i++)
lgsup[i] = lgsup[i / 2] + 1;
for(int i = 0; i<m; i++)
{
in>>x>>y;
dif = y - x + 1, chestie = dif - (1<<lgsup[dif]);
rasp = min(d[lgsup[dif]][x], d[lgsup[dif]][x + chestie]);
out<<rasp<<'\n';
}
return player_unu;
}