Pagini recente » Cod sursa (job #548857) | Cod sursa (job #2213424) | Cod sursa (job #944568) | Cod sursa (job #2060827) | Cod sursa (job #2969068)
#include <bits/stdc++.h>
#define N 100008
#define inf 1e9
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, q;
int v[N];
int Log[N];
int R[N][26];
void Precalculare()
{
int i, j;
for( i=2; i<=n; i++ )
Log[i] = Log[i / 2] + 1;
for( i=1; i<=n; i++ )
R[i][0] = v[i];
for( j=1; j<=Log[n]; j++ )
for( i=1; i + (1<<j) - 1 <= n; i++ )
R[i][j] = min( R[i][j - 1], R[i + (1 << (j - 1))][j - 1] );
}
void Citire()
{
int i;
fin >> n >> q;
for( i=1; i<=n; i++ )
fin >> v[i];
Precalculare();
}
void Rezolvare()
{
int st, dr;
while( q-- )
{
fin >> st >> dr;
int len = dr - st + 1;
int k = Log[len];
fout << min( R[st][k], R[dr - (1<<k) + 1][k] ) << "\n";
}
}
int main()
{
Citire();
Rezolvare();
return 0;
}