Pagini recente » Cod sursa (job #1537107) | Cod sursa (job #459654) | Cod sursa (job #2957995) | Cod sursa (job #139497) | Cod sursa (job #2773809)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define cin fin
#define cout fout
#define N 100005
int rmq[N][20], v[N], n, m, x, y;
int main()
{
cin >> n >> m;
for(int i = 1 ; i <= n ; i++)
{
cin >> v[i];
}
for(int i = 1 ; i <= n ; i++)
{
rmq[i][0] = v[i];
}
for(int j = 1, nr = 2 ; nr <= n ; j++ , nr *= 2)
{
for(int i = 1; i+nr-1 <= n ; i++)
{
rmq[i][j] = min(rmq[i][j-1],rmq[i+nr/2][j-1]);
}
}
for(int i = 1 ; i <= m ; i++)
{
cin >> x >> y;
if(x > y)swap(x,y);
int d = y-x+1;
int xp = 0, p = 1;
while(p <= d)p *= 2, xp++;
p /= 2 , xp--;
cout << min(rmq[x][xp],rmq[y-p+1][xp]) << "\n";
}
return 0;
}