Pagini recente » Cod sursa (job #444204) | Cod sursa (job #288888) | Cod sursa (job #825273) | Cod sursa (job #1862665) | Cod sursa (job #3185817)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,a[100001];
int ai[400001];
int x,y;
void creare(int st,int dr,int nod)
{
if(st==dr)
{
ai[nod]=a[st];
return;
}
int mij=(st+dr)/2;
creare(st,mij,nod*2);
creare(mij+1,dr,nod*2+1);
ai[nod]=min(ai[nod*2],ai[nod*2+1]);
}
int query(int st,int dr,int nod)
{
if(st>y || dr<x)
return 100000;
if(st>=x && dr<=y)
return ai[nod];
int mij=(st+dr)/2;
return min(query(st,mij,nod*2),query(mij+1,dr,nod*2+1));
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
f>>a[i];
creare(1,n,1);
for(int i=1;i<=m;i++)
{
f>>x>>y;
g<<query(1,n,1)<<'\n';
}
return 0;
}