Pagini recente » Borderou de evaluare (job #3355457) | Cod sursa (job #449299) | Borderou de evaluare (job #3315250) | Borderou de evaluare (job #3303156) | Cod sursa (job #3352055)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin ("rmq.in") ;
ofstream fout ("rmq.out") ;
int rmq[30][100001] ;
int e[100001] ;
signed main()
{
int n , q ;
fin >> n >> q ;
for ( int i = 0 ; i < n ; i ++ )
fin >> rmq[0][i] ;
for ( int i = 2 ; i <= n ; i ++ )
e[i] = 1 + e[i/2] ;
for ( int j = 1 ; ( 1 << j ) <= n ; j ++ )
for ( int i = 0 ; i + ( 1 << j ) - 1 < n ; i ++ )
rmq[j][i] = min ( rmq[j-1][i] , rmq[j-1][i+(1<<(j-1))] ) ;
while ( q -- )
{
int st , dr ;
fin >> st >> dr ;
st -- ;
dr -- ;
int k = e[dr-st+1] ;
fout << min ( rmq[k][st] , rmq[k][dr-(1<<k)+1] ) ;
fout << '\n' ;
}
return 0;
}