Pagini recente » Cod sursa (job #594423) | Cod sursa (job #469575) | Cod sursa (job #2692711) | Cod sursa (job #469715) | Cod sursa (job #2700480)
//ALEXANDRU MICLEA
#include <vector>
#include <algorithm>
#include <string>
#include <string.h>
#include <cstring>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
#include <assert.h>
#include <iostream>
using namespace std;
using ll = long long;
#define fast_cin() ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
//VARIABLES
int v[100005];
int dp[100005][25];
int p2[25];
//FUNCTIONS
//MAIN
int main() {
#ifdef INFOARENA
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
#endif
fast_cin();
p2[0] = 1;
for (int i = 1; i <= 20; i++) {
p2[i] = p2[i - 1] * 2;
}
int n, m; cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> v[i];
for (int i = 1; i <= n; i++) dp[i][0] = v[i];
for (int i = n; i >= 1; i--) {
for (int j = 1; p2[j] <= n - i; j++) {
dp[i][j] = min(dp[i][j - 1], dp[i + p2[j - 1]][j - 1]);
}
}
for (int i = 1; i <= m; i++) {
int x, y; cin >> x >> y;
int d = y - x + 1;
int l = (int)log2(d);
cout << min(dp[x][l], dp[y - p2[l] + 1][l]) << '\n';
}
return 0;
}