Pagini recente » Cod sursa (job #3161463) | Cod sursa (job #570773) | Cod sursa (job #3187202) | Cod sursa (job #2519716) | Cod sursa (job #3000195)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,i,v[100002],x,y,blocks[int(sqrt(100002))+2],divlen;
int main()
{
for(i=1;i<=int(sqrt(100002))+1;i++)
blocks[i]=100002;
fin>>n>>m;
divlen=int(sqrt(n));
for(i=1;i<=n;i++){
fin>>v[i];
blocks[(i-1)/divlen+1]=min(blocks[(i-1)/divlen+1],v[i]);
}
for(int c=1;c<=m;c++){
fin>>x>>y;
int minim=100002;
for(i=x;i<=y;i++)
{
if((i-1)%divlen==0){
minim=min(minim,blocks[(i-1)/divlen+1]);
i+=(divlen-1);
}
else
minim=min(minim,v[i]);
}
fout<<minim<<'\n';
}
return 0;
}