Pagini recente » Cod sursa (job #1396744) | Cod sursa (job #1470534) | Cod sursa (job #2541370) | Cod sursa (job #1816080) | Cod sursa (job #2099172)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int arb[400050],i,j,n,m,rigt,lft,x,y,pos,min1;
void update(int st,int dr,int nod)
{
if(st==dr)
{
arb[nod]=x;
return;
}
int mij=(st+dr)/2;
if(pos<=mij)
update(st,mij,2*nod);
else
update(mij+1,dr,2*nod+1);
arb[nod]=min(arb[2*nod],arb[2*nod+1]);
}
void query(int st,int dr,int nod)
{
if(lft<=st && dr<=rigt)
{
min1=min(min1,arb[nod]);
return;
}
int mij=(st+dr)/2;
if(lft<=mij)
{
query(st,mij,2*nod);
}
if(mij<rigt)
{
query(mij+1,dr,2*nod+1);
}
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
pos=i;
update(1,n,1);
}
while(m!=0)
{
f>>lft>>rigt;
min1=10000010;
query(1,n,1);
g<<min1<<'\n';
m--;
}
}