Pagini recente » Cod sursa (job #1784555) | Cod sursa (job #1206028) | Cod sursa (job #2830778) | Cod sursa (job #1582615) | Cod sursa (job #2904059)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int RMQ[100001][18];
int logus[100001];
int query(int left, int right)
{
int len = right - left + 1;
int i = logus[len];
return min(RMQ[left][i], RMQ[right -(1<<i) + 1][i]);
}
int main()
{
int n, m, a, b;
f >> n >> m;
for(int i = 1; i <= n; i++)
{
f >> RMQ[i][0];
}
logus[1] = 0;
for(int i = 2; i <= n; i++)
logus[i] = 1 + logus[i/2];
for(int j = 1; (1<<j) <= n; j++)
{
for(int i = 1; i + (1 << j) - 1 <= n; i++)
{
RMQ[i][j] = min(RMQ[i][j-1], RMQ[i + (1<<(j-1))][j-1]);
}
}
for(int j = 0; j < m; j++)
{
f >> a >> b;
g << query(a, b) << "\n";
}
return 0;
}