Pagini recente » Cod sursa (job #1699026) | Cod sursa (job #2606872) | Cod sursa (job #2126447) | Cod sursa (job #2386377) | Cod sursa (job #3169880)
#include <fstream>
#include <algorithm>
using namespace std;
int v[100001];
int b[801];
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int main()
{
int n,i,l,j,m,rez;
cin>>n>>m;
l=sqrt(n);
for(i=0;i<=800;i++)
b[i]=1e7;
for(i=0,j=-1;i<n;i++)
{
cin>>v[i];
if(i%l==0)
j++;
b[j]=min(b[j],v[i]);
}
int st,dr,k;
while(m>0)
{
m--;
cin>>st>>dr;
st--;
dr--;
rez=1e7;
while(st<=dr&&st%l!=0)
{
rez=min(rez,v[st++]);
}
while(st<=dr&&dr%l!=l-1)
{
rez=min(rez,v[dr--]);
}
k=st/l;
while(st<dr)
{
rez=min(rez,b[k++]);
st+=l;
}
cout<<rez<<'\n';
}
return 0;
}