Pagini recente » Cod sursa (job #2018187) | Cod sursa (job #322590) | Cod sursa (job #1301508) | Cod sursa (job #1214853) | Cod sursa (job #3134294)
#include <iostream>
#include <fstream>
using namespace std;
int n,m,v[100001];
int a[20][100001];
int p[100004];
int main(){
int i,j,st,dr,k;
ifstream in("rmq.in");
ofstream out("rmq.out");
in>>n>>m;
for(i=1;i<=n;i++)
in>>v[i];
for(i=1;i<=n;i++)
a[0][i]=v[i];
for(k=1;(1<<k)<=n;k++)
for(i=1;i+(1<<k)-1<=n;i++)
a[k][i]=min(a[k-1][i],a[k-1][i+(1<<(k-1))]);
for (i=1;i<=n;i++){
for (k=0;(1<<k)<=i;k++);
p[i]=k-1;
}
for(i=1;i<=m;i++){
in>>st>>dr;
k=p[dr-st+1];
out<<min(a[k][st],a[k][dr-(1<<k)+1])<<"\n";
}
}