Pagini recente » Cod sursa (job #1750212) | Cod sursa (job #123698) | Cod sursa (job #780914) | Cod sursa (job #279872) | Cod sursa (job #1730899)
#include <iostream>
#include <vector>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n,m;
vector<int> vec;
int rmq[100003][20];
int v[100003];
void processlog()
{
for (int i = 2; i <= 100000;i++)
{
v[i] = 1 + v[i/2];
}
}
int main()
{
processlog();
fin>>n>>m;
for (int i = 1; i <= n; i++)
fin>>rmq[i][0];
for (int j = 1; (1<<j) <= n; j++)
{
for (int i = 1; i<=n-(1<<j)+1; i++)
{
rmq[i][j] = min (rmq[i][j-1], rmq[i+(1<<(j-1))][j-1]);
}
}
for (int i = 1; i <= m; i++)
{
int x,y;
fin>>x>>y;
int d= y - x + 1;
int length = v[d];
int minim = min (rmq[x][length], rmq[y-(1<<length) + 1][length]);
fout<<minim<<"\n";
}
}