Pagini recente » Cod sursa (job #448775) | Cod sursa (job #795938) | Cod sursa (job #676855) | Cod sursa (job #2166129) | Cod sursa (job #2480977)
#include <fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int N = 100001;
const int LIN = 17;
int r[LIN][N], log[N], n, m;
int main()
{
in>>n>>m;
log[1] = 0;
for(int i=2; i<=n; i++)
{
log[i] = 1 + log[i/2];
}
for(int j=0; j<n; j++)
in>>r[0][j];
for(int i=1; i<=log[n]; i++)
{
for(int j=0; j<=n-(1<<(i-1)); j++)
{
r[i][j] = min(r[i-1][j], r[i-1][j+(1<<(i-1))]);
}
}
for(int i=1; i<=m; i++)
{
int p, q;
in>>p>>q;
p--; q--;
int l = log[q-p+1];
int ans = min(r[l][p], r[l][q-(1<<l)+1]);
out<<ans<<'\n';
}
return 0;
}