Pagini recente » Cod sursa (job #121996) | Cod sursa (job #1018318) | Cod sursa (job #3042010) | Cod sursa (job #486942) | Cod sursa (job #2932338)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int sp[20][100005];
int log[100005];
void fsp(int n)
{
for(int i=1;i<=log[n];i++)
{
for(int j=1;j<=n-(1<<(i))+1;j++)
sp[i][j]=min(sp[i-1][j],sp[i-1][j+(1<<(i-1))]);
}
}
int RMQ(int x,int y)
{
int k=x-y+1;
return min(sp[log[k]][x],sp[log[k]][y-(1<<log[k])+1]);
}
int main()
{
int n,m,x,y;
cin>>n>>m;
for(int i=2;i<=n;i++)
log[i]=1+log[i/2];
for(int i=1;i<=n;i++)
cin>>sp[0][i];
for(int i=0;i<m;i++)
{
cin>>x>>y;
cout<<RMQ(min(x,y),max(x,y))<<'\n';
}
}