Pagini recente » Cod sursa (job #2871627) | Cod sursa (job #2875723) | Cod sursa (job #1074815) | Cod sursa (job #414837) | Cod sursa (job #2484796)
#include<bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int st[100000][2000];
int val[100000];
int n,q;
void precompute(int*array,int n)
{
for (int i = 0; i <n; i++)
st[i][0] = array[i];
for (int j = 1; 1<<j <=n; j++)
{
for (int i = 0; i + (1 << j) <= n; i++)
{
st[i][j] = min(st[i][j-1], st[i + (1 << (j - 1))][j - 1]);
}
}
}
int rmq(int l,int r)
{
int j = log2(r -l + 1);
int minimum = min(st[l][j], st[r - (1 << j) + 1][j]);
return minimum;
}
void read()
{
in>>n>>q;
for(int i=0; i<n; i++)
in>>val[i];
precompute(val,n);
int l,r;
for(int i=0; i<q; i++)
{
in>>l>>r;
out<<rmq(l-1,r-1)<<'\n';
}
}
int main()
{
read();
}