Pagini recente » Cod sursa (job #1265982) | Cod sursa (job #2739892) | Cod sursa (job #625869) | Cod sursa (job #2540973) | Cod sursa (job #2265448)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int i,t[100001],j,m,n,a,b,lg[100001];
int q[20][100001];
int main()
{
fin>>n>>m;
for (int i=1;i<=n;i++)
fin>>t[i];
for (int i=2;i<=100001;i++)
lg[i]=lg[i/2]+1;
int p=0,n1=n;
while (n1>2) {p++; n1/=2;}
for (i=1;i<=n;i++)
q[0][i]=t[i];
for (j=1;1 << j<=n ; j++)
for (i=1;i+ (1<<j)-1<=n;i++)
{
q[j][i]=min(q[j-1][i],q[j-1][i+(1<<(j-1))]);
}
for (i=1;i<=m;i++)
{
fin>>a>>b;
p=lg[b-a];
fout<<min(q[p][a],q[p][b-(1<<p)+1])<<"\n";
}
return 0;
}