Pagini recente » Cod sursa (job #963202) | Cod sursa (job #1545228) | Cod sursa (job #2967169) | Cod sursa (job #179662) | Cod sursa (job #1210706)
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n,q,i,j,x,y,lg;
int a[25][100010],p[100010];
inline int minim (int x, int y){
return (x<y?x:y);
}
int main () {
fin>>n>>q;
p[0]=-1;
for (i=1;i<=n;i++) {
fin>>a[0][i];
p[i]=1+p[i/2];
}
for (i=1;(1<<i)<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=minim(a[i-1][j],((1<<(i-1))+j)<=n?a[i-1][((1<<(i-1))+j)]:a[i-1][j]);
while (q--) {
fin>>x>>y;
lg=y-x+1;
fout<<minim(a[p[lg]][x], a[p[lg]][y-(1<<p[lg])+1])<<"\n";
}
return 0;
}