Pagini recente » Cod sursa (job #796894) | Cod sursa (job #2690871) | Cod sursa (job #174231) | Cod sursa (job #1007750) | Cod sursa (job #2545812)
#include <fstream>
#include <cmath>
#define nmax 100005
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n;
int q, a[nmax];
int m[nmax][20];
void init()
{
for(int i=0; i<n; i++)
m[i][0]=a[i];
for(int j=1; (1<<j)<=n; j++)
for(int i=0; i+(1<<j)-1<n; i++)
m[i][j]=min(m[i][j-1], m[i+(1<<(j-1))][j-1]);
}
int main()
{
f>>n>>q;
for(int i=0; i<n; i++)
f>>a[i];
init();
for(int nr=1; nr<=q; nr++)
{
int i, j;
f>>i>>j;
i--;
j--;
int k=(log2(j-i+1));
g<<min(m[i][k], m[j-(1<<k)+1][k])<<'\n';
}
return 0;
}