Pagini recente » Cod sursa (job #920835) | Cod sursa (job #3271042) | Cod sursa (job #2749512) | Cod sursa (job #2385404) | Cod sursa (job #2503465)
#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=rmq[0][x];
y-=x;
aux=1;
p=0;
while(y)
{
if(y%2==1)
{
rez=min(rez,rmq[p][x+1]);
x+=aux;
}
p++;
y/=2;
aux*=2;
}
cout<<rez<<'\n';
}
return 0;
}