Pagini recente » Cod sursa (job #1552706) | Cod sursa (job #398042) | Cod sursa (job #384326) | Cod sursa (job #1530603) | Cod sursa (job #2970172)
#include<bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, m;
int rmq[20][100005];
void citire()
{
in>>n>>m;
for ( int i = 1 ; i <= n ; i++ )
{
in>>rmq[0][i];
}
}
void make_rmq()
{
for ( int i = 1 ; (1<<i) <= n ; i++ )
{
for ( int j = 1 ; j + (1<<i) - 1 <= n ; j++ )
{
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
}
}
}
int getLog(int x)
{
int ans = 0;
while ( (1<<ans) <= x )
ans++;
ans--;
return ans;
}
void rez()
{
make_rmq();
for ( int i = 1 ; i <= m ; i++ )
{
int x, y;
in>>x>>y;
int k = getLog(y-x+1);
out<<min(rmq[k][x], rmq[k][y-(1<<k)+1])<<'\n';
}
}
int main()
{
citire();
rez();
return 0;
}