Pagini recente » Cod sursa (job #2299463) | Cod sursa (job #350786) | Cod sursa (job #595278) | Cod sursa (job #1762137) | Cod sursa (job #3037692)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int m[21][100002], n, q;
int crt, x, lung, st, dr, val;
int main ()
{
cin>>n>>q;
for (int i=1; i<=n; i++)
cin>>m[1][i];
crt=1; val=(int)log2(n);
val++;
for (int i=2; i<=val; i++, crt*=2)
for (int j=1; j<=n-crt+1; j++)
m[i][j]=min(m[i-1][j], m[i-1][j+crt]);
while (q--)
{
cin>>st>>dr;
lung=dr-st+1;
crt=(int)log2(lung);
x=1<<(crt-1);
cout<<min(m[crt][st], m[crt][dr-x+1])<<'\n';
}
return 0;
}