Pagini recente » Cod sursa (job #2671170) | Cod sursa (job #1436867) | Cod sursa (job #2446411) | Cod sursa (job #2963436) | Cod sursa (job #2835432)
#include <fstream>
#define NMAX 100000
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n, m, j, st, dr, e;
int r[18][NMAX+2], E[NMAX+2];
int main()
{
fin>>n>>m;
///construim r
for(int i=1; i<=n; i++)
fin>>r[0][i];
for(int p=1; (1<<p)<=n; p++)
{
for(int i=1; i<=n-(1<<p)+1; i++)
{
j=i+(1<<(p-1));
r[p][i]=min(r[p-1][i],r[p-1][j]);
}
}
///construim E
E[1]=0;
for(int i=2; i<=n; i++)
E[i]=1+E[i/2];
///raspundem la intrebari
for(int i=1; i<=m; i++)
{
fin>>st>>dr;
e=E[dr-st+1];
fout<<min(r[e][st], r[e][dr-(1<<e)+1])<<"\n";
}
return 0;
}