Pagini recente » Arhiva de probleme | Monitorul de evaluare | Cod sursa (job #200878) | Istoria paginii runda/mlindulmropta/clasament | Cod sursa (job #2574232)
#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;
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--;
z = log2 ( y - x + 1 );
fout << min ( a[z][x], a[z][y-(1<<z)+1] ) << '\n';
}
return 0;
}