Pagini recente » Cod sursa (job #2459061) | Cod sursa (job #1253932) | Cod sursa (job #1271564) | Cod sursa (job #968556) | Cod sursa (job #2773805)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("subarbor.in");
ofstream fout("subarbor.out");
#define cin fin
#define cout fout
#define N 10005
vector< vector < int > > a;
int rmq[N][N], 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]) << " ";
}
return 0;
}