Pagini recente » Cod sursa (job #1644433) | Cod sursa (job #1109005) | Cod sursa (job #2190686) | Cod sursa (job #1409171) | Cod sursa (job #724104)
Cod sursa(job #724104)
#include<fstream>
#include<algorithm>
#define _NM 100010
#define _TM 262144
const int INF=2147483647;
using namespace std;
int nA, A[_NM], tree[_TM];
int create_tree(int iNod, int le, int ri)
{
if (le==ri) return tree[iNod]=A[le];
return tree[iNod]=min(create_tree(iNod*2,le,(le+ri)/2), create_tree(iNod*2+1,(le+ri)/2+1,ri));
}
int qmin_tree(int iNod, int le, int ri, int i, int j)
{
if (ri<i||le>j) return INF;
if (le>=i&&ri<=j) return tree[iNod];
return min(qmin_tree(iNod*2,le,(le+ri)/2,i,j),qmin_tree(iNod*2+1,(le+ri)/2+1,ri,i,j));
}
int main()
{
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int nOp; fin>>nA>>nOp;
for (int i=1;i<=nA;i++) fin>>A[i];
create_tree(1,1,nA);
for (int i=1;i<=nOp;i++)
{
int a,b; fin>>a>>b;
fout<<qmin_tree(1,1,nA,a,b)<<'\n';
}
return 0;
}