Pagini recente » Cod sursa (job #1397746) | Cod sursa (job #2931032) | Cod sursa (job #1613625) | Cod sursa (job #1159963) | Cod sursa (job #1915740)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int oo = 0x3f3f3f3f;
int n, m, a[100010], sq[100010], rt, mn;
int main()
{
fin >> n >> m;
int i,j,x,y,ls,ld;
for(int i=1; i<=n; i++)
fin >> a[i];
for(rt=0; rt*rt <= n; rt++);rt--;
for(int i=1; rt*i<=n; i++)
{
sq[i] = oo;
for(j=rt*(i-1); j<= rt*i; j++)
{
sq[i] = min(sq[i], a[j]);
}
}
for(int i=1; i<=m; i++)
{
mn=oo;
fin >> x >> y;
for(j=1; j*rt<x; j++); j++;
ls = min(rt*(i-1), y);
for(;rt*j <= y; j++)
mn = min(mn, sq[j]);
ld = max(x, rt*(j-1));
for(j=x; j<=ls; j++)
mn = min(mn, a[j]);
for(j=ld; j<=y; j++)
mn = min(mn, a[j]);
fout<<mn<<'\n';
}
return 0;
}