Pagini recente » Cod sursa (job #1691501) | Cod sursa (job #3181496) | Cod sursa (job #2545450) | Cod sursa (job #1129965) | Cod sursa (job #2863709)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int NMAX = 100005;
int v[NMAX],aux[NMAX][21],n,lg[NMAX];
void init()
{
lg[1]=0;
for(int i = 2;i <= n;i++)
lg[i]=lg[i / 2]+1;
for(int i = 1;i <= n;i++)
aux[i][0] = v[i];
for(int i = 1;(1<<i) <= n;i++)
{
for(int j = 1;j <= n - (1<<i) + 1;j++)
{
int l = 1<<(i-1);
aux[j][i]=min(aux[j][i - 1],aux[j + 1][i - 1]);
}
}
}
int main()
{
int n,m;
fin>>m;
for(int i = 1;i <= n;i++)
{
fin>>v[i];
}
init();
int x,y;
for(int i = 1;i <= m;i++)
{
fin>>x>>y;
int diff = y-x+1;
int l=lg[diff];
int sh = diff - (1<<l);
fout<<min(aux[x][l],aux[x + sh][l])<<"\n";
}
return 0;
}