Pagini recente » Cod sursa (job #2626076) | Cod sursa (job #2910011) | Cod sursa (job #2280666) | Cod sursa (job #2785277) | Cod sursa (job #2574207)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
vector < int > a[18];
int v[NMAX];
int main()
{
int n, q, i, j, x, y, z, lg;
fin >> n >> q;
for ( i = 1 ; i <= n ; i++ ) fin >> v[i], a[0].push_back ( v[i] );
x = log2 ( n );
for ( i = 1 ; i <= x ; i++ )
for ( j = 0 ; j <= n - ( 1 << i ) ; j++ )
a[i].push_back ( min ( a[i-1][j], a[i-1][j+(1<<(i-1))] ) );
while ( q-- )
{
fin >> x >> y;
x--, y--;
lg = ( y - x + 1 );
z = log2 ( lg );
int X = a[z][x];
int Y = a[z][y-(1<<z)+1];
fout << min ( a[z][x], a[z][y-(1<<z)+1] ) << '\n';
}
return 0;
}