Pagini recente » Cod sursa (job #1433568) | Cod sursa (job #604932) | Cod sursa (job #1352994) | Cod sursa (job #2039863) | Cod sursa (job #2617081)
#include <cmath>
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int N = 100002, Inf = 1e9;
int n,m, x, y, ls , ld;
int v[N],M[N];
int main() {
cin >> n >> m;
for(int i = 1 ;i <= n ;i ++)
{
cin >> v[i];
}
int rad = sqrt(n);
for(int i = 1; i * rad <=n; i ++)
{
M[i] = Inf;
for(int j= rad*(i - 1) + 1; j <=rad * i; j ++)
{
M[i] = min(M[i], v[j]);
}
}
// for(int i = 1 ;i <=n; i ++)
// cout << M[i]<<" ";
// cout << '\n';
for(int i = 1 ;i <=m ;i ++)
{
int ans =1e9,j;
cin >> x >> y;
for (j=1;rad*j<x;j++);
j++;
ls=rad*(j-1);
for (;rad*j<=y;j++)
ans=min(ans,M[j]);
ld=rad*(j-1);
for (j=x;j<=ls;j++)
ans=min(ans,v[j]);
for (j=ld;j<=y;j++)
ans=min(ans,v[j]);
cout << ans <<'\n';
}
return 0;
}