Pagini recente » Cod sursa (job #1017954) | Cod sursa (job #1771015) | Cod sursa (job #2901393) | Cod sursa (job #2536424) | Cod sursa (job #3276352)
#include <bits/stdc++.h>
#pragma GCC optimize("O3","Ofast","unroll-loops")
using namespace std;
int n,q;
int look[105][35];
int v[105];
void build(int n)
{
for(int i=1;i<=n;i++)
look[i][0]=v[i];
for(int j=1;(1 << j)<=n;j++)
{
for(int i=1;(i+(1 << j)-1)<=n;i++)
{
look[i][j]=min(look[i][j-1],look[i+(1<<(j-1))][j-1]);
}
}
return;
}
int query(int l,int r)
{
int j=(int)log2(r-l+1);
if(look[l][j]<=look[r-(1<<j)+1][j])
return look[l][j];
else
return look[r-(1<<j)+1][j];
}
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int l,r;
cin >> n >> q;
for(int i=1;i<=n;i++)
{
cin >> v[i];
}
build(n);
for(int i=1;i<=q;i++)
{
cin >> l >> r;
cout << query(l,r) << '\n';
}
return 0;
}