Pagini recente » Cod sursa (job #1740004) | Cod sursa (job #2781532) | Cod sursa (job #2376745) | Cod sursa (job #353682) | Cod sursa (job #2503466)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n,m,x=2,aux,p,y,rez;
vector<int> rmq[20];
int main()
{
cin>>n>>m;
rmq[0].push_back(0);
for(int i=1;i<=n;i++)
{
cin>>aux;
rmq[0].push_back(aux);
}
while(x<=n)
{
p++;
rmq[p].push_back(0);
for(int i=1;i+x-1<=n;i++)
{
rmq[p].push_back(min(rmq[p-1][i],rmq[p-1][i+x/2]));
}
x*=2;
}
for(int i=1;i<=m;i++)
{
cin>>x>>y;
rez=100001;
y-=x-1;
aux=1;
p=0;
while(y)
{
if(y%2==1)
{
rez=min(rez,rmq[p][x]);
x+=aux;
}
p++;
y/=2;
aux*=2;
}
cout<<rez<<'\n';
}
return 0;
}