Pagini recente » Cod sursa (job #2846195) | Cod sursa (job #1101953) | Cod sursa (job #1374541) | Cod sursa (job #78220) | Cod sursa (job #3169893)
#include <fstream>
#include<cmath>
using namespace std;
int bat[318], v[100005];
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, i, k=0,l, sum=0, cnt=-1, poz, val, m, j, st, dr;
cin>>n>>m;
l=sqrt(n);
bat[0]=100005;
for (i=0;i<n;i++)
{
cin>>v[i];
if (i%l==0)
{
cnt++;
bat[cnt]=100005;
}
bat[cnt]=min(v[i], bat[cnt]);
}
int minn=100005;
for (i=1;i<=m;i++)
{
cin>>poz>>val;
st=poz-1;
dr=val-1;
while( st<=dr && st%l!=0)
{
minn=min(minn, v[st]);
st++;
}
while(st<=dr && st+l-1<=dr)
{
minn=min(bat[st/l], minn);
st+=l;
}
while(st<=dr)
{
minn=min(v[st], minn);
st++;
}
cout<<minn<<'\n';
minn=100005;
}
return 0;
}