Pagini recente » Cod sursa (job #164427) | Cod sursa (job #950396) | Cod sursa (job #1685859) | Cod sursa (job #1887425) | Cod sursa (job #2292136)
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n, m, i, j, v[20][100002], lg[100002], st, dr, l, k, dist;
int main()
{
fin>>n>>m;
for(i=1; i<=n; i++){
fin>>v[0][i];
}
lg[1]=0;
for (i=2;i<=n;i++){
lg[i]=lg[i/2]+1;
}
for (i=1; i<=lg[n]+1; i++){
for (j=1; j<=n-(1<<i)+1; j++){
l=1<<(i-1);
v[i][j]= min(v[i-1][j], v[i-1][j+l]);
}
}
for(i =1; i<=m; i++){
fin>>st>>dr;
k=lg[dr-st+1];
dist=(1<<k);
fout<<min(v[k][st], v[k][dr-dist+1])<<"\n";
}
}