Pagini recente » Cod sursa (job #42270) | Cod sursa (job #1554487) | Cod sursa (job #2220935) | Cod sursa (job #2487120) | Cod sursa (job #2370079)
#include <bits/stdc++.h>
#define MAXN (1<<19)
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,poz,val,v[MAXN],m,a,b;
void constructie (int nod, int st, int dr)
{ if(st==dr) v[nod]=val;
else
{ int mij=(st+dr)/2;
if(poz<=mij) constructie(2*nod,st,mij);
else constructie(2*nod+1,mij+1,dr);
v[nod]=min(v[2*nod],v[2*nod+1]);
}
}
int raspuns (int nod, int st, int dr)
{ if(a<=st && dr<=b) return v[nod];
else
{ int x1=MAXN, x2=MAXN, mij=(st+dr)/2;
if(a<=mij) x1=raspuns(2*nod,st,mij);
if(b>=mij+1) x2=raspuns(2*nod+1,mij+1,dr);
return min(x1,x2);
}
}
int main()
{ f>>n>>m;
for(int i=1;i<=n;i++)
{ f>>val;
poz=i;
constructie(1,1,n);
}
for(int i=1;i<=m;i++)
{ f>>a>>b;
g<<raspuns(1,1,n)<<'\n';
}
return 0;
}