Pagini recente » Cod sursa (job #532168) | Cod sursa (job #2046026) | Cod sursa (job #2596462) | Cod sursa (job #297303) | Cod sursa (job #2869526)
#include<bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int t[100005][17], n, m, x, y, lg[100005];
void precalc()
{
for ( int i = 2 ; i <= 100000 ; i++ )
{
lg[i] = 1 + lg[i/2];
}
}
void citire()
{
precalc();
in>>n>>m;
for ( int i = 1 ; i <= n ; i++ )
{
in>>t[i][0];
}
}
void make_restul_t()
{
for ( int j = 1 ; (1<<j) <= n ; j++ )
{
for ( int i = (1<<j) ; i <= n ; i++ )
{
t[i][j] = min(t[i][j-1], t[i - (1<<j-1)][j-1]);
}
}
}
void rez()
{
for ( int i = 1 ; i <= m ; i++ )
{
in>>x>>y;
out<<min(t[y][lg[y-x+1]], t[x+(1<<lg[y-x+1])-1][lg[y-x+1]])<<'\n';
}
}
int main()
{
citire();
make_restul_t();
rez();
return 0;
}