Pagini recente » Cod sursa (job #2284909) | Cod sursa (job #164504) | Cod sursa (job #2670639) | Cod sursa (job #1778347) | Cod sursa (job #2907216)
#include <fstream>
#include <vector>
#include <cmath>
#define size 100000
#define logsize 17
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
long long n,m,op,j,v[100001],mt[size][logsize];
long long query(long long st,long long dr)
{
long long s = dr-st+1,nr = 0;
nr = (long long )log2(s);
return min(mt[st][nr], mt[dr - (long long )pow(2, nr) + 1][nr]);
}
int main()
{
fin >> n >> m;
long long i;
for(i = 0;i<n;i++)
{
fin >> v[i];
mt[i][0] = v[i];
}
for(j = 1;j<=logsize;j++)
for(i = 0;i+ (long long ) pow(2,j)-1<n;i++)
mt[i][j] = min(mt[i][j - 1], mt[i + (long long) pow(2, (j - 1))][j - 1]);
long long a,b;
for(i = 0;i<m;i++)
{
fin >> a >> b;
fout << query(a - 1, b - 1) << '\n';
}
fin.close();fout.close();
}