Pagini recente » Cod sursa (job #2606357) | Cod sursa (job #434634) | Cod sursa (job #2701804) | Cod sursa (job #1256813) | Cod sursa (job #2744268)
#include <bits/stdc++.h>
#define DimMax 100001
#define LogMax 20
using namespace std;
ifstream fin ( "rmq.in" );
ofstream fout ( "rmq.out" );
int n, q;
int x;
int a, b;
int Min[DimMax][LogMax];
int Minim( int a, int b )
{
int lg = b - a + 1;
int p = 0;
while ( (1 << p) <= lg ) p++;
p--;
return min(Min[a][p], Min[b - (1 << p) + 1][p]);
}
int main()
{
fin >> n >> q;
for ( int i = 1; i <= n; i++ )
{
fin >> x;
Min[i][0] = x;
}
for ( int lg = 1; (1 << lg) <= n; lg++ )
for ( int i = 1; i + (1 << lg) - 1 <= n; i++ )
Min[i][lg] = min(Min[i][lg - 1], Min[i + (1 << (lg - 1))][lg - 1]);
//fout << Minim(2, 8);
//cin >> q;
for ( int i = 1; i <= q; i++ )
{
fin >> a >> b; //a++; b++;
if ( a > b ) swap(a, b);
fout << Minim(a, b) << '\n';
}
return 0;
}