Pagini recente » Cod sursa (job #1887067) | Cod sursa (job #2855499) | Cod sursa (job #338430) | Cod sursa (job #1488067) | Cod sursa (job #1050632)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int n_max=100001;
const int inf=100001;
int n, i, v[n_max], m[n_max], l, k, x, y, q;
void afis(int x, int y)
{
int i, mini=inf, s, d;
s=x/l;
d=y/l;
for(i=s+1; i<d; i++)
if(mini>m[i]) mini=m[i];
for(i=x; i/l==s; i++) if(mini>v[i]) mini=v[i];
for(i=y; i/l==d; i--) if(mini>v[i]) mini=v[i];
cout<<mini<<'\n';
}
int main()
{
cin>>n>>q;
l=sqrt(n);
k=n/l;
if(n%l) k++;
for(i=0; i<k; i++) m[i]=inf;
for(i=0; i<n; i++)
{
cin>>v[i];
if(v[i]<m[i/l]) m[i/l]=v[i];
}
for(i=1; i<=q; i++)
{
cin>>x>>y;
afis(x-1, y-1);
}
return 0;
}