Pagini recente » Cod sursa (job #738557) | Cod sursa (job #3130683) | Cod sursa (job #1362107) | Cod sursa (job #791355) | Cod sursa (job #1679029)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int N = 100005;
int n, m, a, b, v[N], r[N][18], log[N];
int mini(int n, int m)
{
if(n>m) return m;
else return n;
}
int main()
{
in>>n>>m;
for(int i = 1; i <= n; i++){
in>>v[i];
}
for(int i = 2; i <= n; i++)
log[i]=1+log[i/2];
for(int i = 1; i <= m; i++){
r[i][0] = v[i];
for(int j = 1;(1<<j) <= i; j++)
r[i][j] = mini(r[i][j-1], r[i-(1<<(j-1))][j-1]);
}
int l;
for(int i = 1; i <= m; i++){
in>>a>>b;
l = log[a-b+1];
out<<mini(r[b][l], r[a+(1<<l)-1][l]);
}
return 0;
}