Pagini recente » Cod sursa (job #1357833) | Cod sursa (job #3269463) | Cod sursa (job #2629516) | Cod sursa (job #1833403) | Cod sursa (job #3036810)
#include <fstream>
#include <cmath>
#define NMAX 100002
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, q, crt, val, x;
int st, dr, lg;
int mat[20][NMAX];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int i, j;
cin >> n >> q;
for(i = 1; i <= n; i++)
cin >> mat[1][i];
crt = 1; val = (int) log2(n); val++;
for(i = 2; i <= val; i++, crt *= 2)
{
for(j = 1; j <= n - crt; j++)
mat[i][j] = min(mat[i - 1][j], mat[i - 1][j + crt]);
}
/*for(i = 1, crt = 1; i <= val; i++, crt *= 2)
{
for(j = 1; j <= n - crt; j++)
cout << mat[i][j] << ' ';
cout << '\n';
}*/
while(q--)
{
cin >> st >> dr;
lg = dr - st + 1;
val = (int) log2(lg); val++;
x = 1 << (val - 1);
///cout << st << ' ' << dr << ' ' << val << ' ' << x << '\n';
cout << min(mat[val][st], mat[val][dr - x + 1]) << '\n';
}
return 0;
}