Pagini recente » Cod sursa (job #2070443) | Cod sursa (job #3004951) | Cod sursa (job #2654447) | Cod sursa (job #2865467) | Cod sursa (job #2978083)
#include <bits/stdc++.h>
using namespace std;
string np = "rmq";
ifstream f(np + ".in");
ofstream g(np + ".out");
// #define f cin
// #define g cout
int n, m;
int mat[100003][17];
int querry(int st, int dr)
{
int len = dr - st + 1;
int k = 0;
while ((1 << (k + 1)) <= len)
k++;
return min(mat[st][k], mat[dr - (1 << k) + 1][k]);
}
int main()
{
f >> n >> m;
for (int i = 0; i < n; i++)
f >> mat[i][0];
for (int k = 1; k < 17; k++)
for (int i = 0; i + (1 << k) - 1 < n; i++)
mat[i][k] = min(mat[i][k - 1], mat[i + (1 << (k - 1))][k - 1]);
for (int st, dr; f >> st >> dr;)
g << querry(st - 1, dr - 1) << '\n';
return 0;
}