Pagini recente » Cod sursa (job #1305173) | Cod sursa (job #1273339) | Cod sursa (job #3243458) | Cod sursa (job #274332) | Cod sursa (job #3247125)
#include <fstream>
using namespace std;
int vpow2[100005];
int mat[20][100005],n;
void construct()
{
for(int p=1;p<=vpow2[n];p++)
{
for(int i=1;i<=n;i++)
{
mat[p][i]=min(mat[p-1][i],mat[p-1][i+(1<<(p-1))]);
}
}
}
void solve(int x,int y)
{
int k=y-x+1;
cout<<min(mat[vpow2[k]][x],mat[vpow2[k]][y-vpow2[k]])<<'\n';
}
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
for(int i=2;i<=100000;i++)
vpow2[i]=vpow2[i/2]+1;
int q,x,y;
cin>>n>>q;
for(int i=1;i<=n;i++)
cin>>mat[0][i];
construct();
for(int i=0;i<q;i++)
{
cin>>x>>y;
solve(x,y);
}
return 0;
}