Pagini recente » Cod sursa (job #2470432) | Cod sursa (job #1541852) | Cod sursa (job #1156531) | Cod sursa (job #1511851) | Cod sursa (job #1523637)
#include <fstream>
#define NMax 100010
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, queries, rmq[17][NMax], lg[NMax];
int getMin(int a, int b)
{
if (a < b)
return a;
return b;
}
int main()
{
f>>n>>queries;
for (int i=1; i<=n; i++)
f>>rmq[0][i];
for (int i=2; i<=n; i++)
lg[i] = lg[i/2] + 1;
for (int i=1; i<=lg[n]; i++)
for (int j=1; j<=n - lg[i] + 1; j++)
rmq[i][j] = getMin(rmq[i-1][j], rmq[i-1][j + (1<<(i-1))]);
int a, b;
for (int i=1; i<=queries; i++) {
f>>a>>b;
int l = lg[b-a+1];
g<<getMin(rmq[l][a], rmq[l][b - (1<<l) + 1])<<"\n";
}
return 0;
}