Pagini recente » Cod sursa (job #1928281) | Cod sursa (job #2362985) | Cod sursa (job #575448) | Cod sursa (job #1365332) | Cod sursa (job #2970171)
#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);
out<<min(rmq[k][x], rmq[k][y-(1<<k)+1])<<'\n';
}
}
int main()
{
citire();
rez();
return 0;
}