Pagini recente » Cod sursa (job #2318487) | Cod sursa (job #2320106) | Cod sursa (job #3293650) | Cod sursa (job #1784224) | Cod sursa (job #2722780)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int v[100005][30];
int lg2[100005];
int rmq(int a, int b){
int dif = b-a+1;
int aux = lg2[dif];
return min(v[a][aux],v[a + dif-(1<<aux)][aux]);
}
int main()
{
int n,m,i,a,b,j;
fin>>n>>m;
for(i = 1; i <= n; i++){
fin>>v[i][0];
lg2[i+1] = lg2[(i+1)/2]+1;
}
for(j = 1; j <= lg2[n]; j++){
for(i = 1; i <= n-(1<<j)+1; i++){
v[i][j] = min(v[ i ][ j-1 ],v[ i+(1<<(j-1)) ][ j-1 ]);
}
}
for(i = 1; i <= m; i++){
fin>>a>>b;
fout<<rmq(a,b)<<'\n';
}
return 0;
}