Pagini recente » Cod sursa (job #227618) | Cod sursa (job #713634) | Cod sursa (job #3265754) | Cod sursa (job #1070421) | Cod sursa (job #2676499)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define NMAX 100002
#define INF 0x3f3f3f3F
int main() {
long long num[NMAX];
long long sq[NMAX] = {0};
long long N, M, i, j, r, x, y, ls, ld, rez;
freopen("test.in", "r", stdin);
freopen("test.out", "w", stdout);
scanf("%lld %lld", &N, &M);
for (i = 1 ; i <= N ; i++) {
scanf("%lld", &num[i]);
}
r = 0;
while (r * r <= N)
{
r++;
}
r--;
for (i = 1 ; r * i <= N ; i++) {
sq[i] = INF;
for(j = r * (i - 1) + 1 ; j <= r * i ; j++) {
sq[i] = min(sq[i], num[j]);
}
}
for (i = 1 ; i <= M ; i++) {
rez = INF;
scanf("%lld %lld", &x, &y);
j = 1;
while (r * j < x)
{
j++;
}
ls = min(r * (j - 1), y);
while (r * j <= y) {
rez = min(rez, sq[j]);
j++;
}
ld = max(r * (j - 1), x);
for (j = x ; j <= ls ; j++) {
rez = min(rez, num[j]);
}
for (j = ld ; j <= y ; j++) {
rez = min(rez, num[j]);
}
printf("%lld\n", rez);
}
return 0;
}