Pagini recente » Cod sursa (job #452811) | Cod sursa (job #2437772) | Cod sursa (job #603290) | Cod sursa (job #638789) | Cod sursa (job #2164918)
///cu radical
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,mm,a[100005],rad,b[100005];
int interog(int x,int y) {
int i,j,k=a[x];
int q=(x-1)/rad+1;
int w=(y-1)/rad+1;
for (i=x;i<=rad*q;i++)
k=min(a[i],k);
for (i=q+1;i<=w-1;i++)
k=min(k,b[i]);
for (i=rad*(w-1)+1;i<=y;i++)
k=min(a[i],k);
return k;
}
int main() {
int i,j,x,y;
f>>n>>mm;
rad=sqrt(n);
for (i=1;i<=n;i++) {
f>>a[i];
b[(i-1)/rad+1]=(b[(i-1)/rad+1]==0)?a[i]:min(a[i],b[(i-1)/rad+1]);
}
for (i=1;i<=mm;i++) {
f>>x>>y;
g<<interog(x,y)<<'\n';
}
return 0;
}