Pagini recente » Cod sursa (job #1845650) | Cod sursa (job #80366) | Cod sursa (job #556114) | Cod sursa (job #2286754) | Cod sursa (job #2270339)
#include <iostream>
#include <fstream>
using namespace std;
const int N = 100001, L = 18;
int r[L][N], log[L];
ifstream fin ("rmq.in" );
ofstream fout ("rmq.out");
int main()
{
int n, m;
fin >> n >> m;
log[1] = 0;
for ( int i = 2; i <= n; i++ )
{
log[i] = log[i/2] + 1;
}
for ( int i = 1; i <= n; i++ )
{
fin >> r[0][i] ;
}
for ( int i = 1; i <= log[n]; i++ )
{
for ( int j = 1 << i ; j <= n; j++ )
{
r[i][j] = min ( r[i-1][j - ( 1 << (i-1) ) ], r[i-1][j] );
}
}
while ( m > 0 )
{
m--;
int x, y;
fin >> x >> y;
int l = log[y-x+1];
int rez = min ( r[l][x+(1<<l)-1], r[l][y] );
fout << rez << "\n";
}
return 0;
}