Pagini recente » Cod sursa (job #2413849) | Cod sursa (job #1015997) | Cod sursa (job #2500573) | Cod sursa (job #2259983) | Cod sursa (job #2873162)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n,m,i,len,b[100005],len1,len2=-1,mn,l,r,v[100005];
int main()
{
cin>>n>>m;
for(i=0; i<n; ++i) cin>>v[i];
len=(int)sqrt(n+.0)+1;
for(i=0; i<n; ++i)
{
len1=i/len;
if(len1!=len2)
{
mn=1200000;
}
mn=min(mn,v[i]);
b[len1]=mn;
len2=len1;
}
for(int j=1; j<=m; ++j)
{
cin>>l>>r;
--l;
--r;
mn=1200000;
for(i=l; i<=r;)
{
if(i%len==0 && (i+len-1)<=r)
{
mn=min(mn,b[i/len]);
i+=len;
}
else
{
mn=min(mn,v[i]);
++i;
}
}
cout<<mn<<'\n';
}
return 0;
}