Pagini recente » Cod sursa (job #282682) | Cod sursa (job #1672991) | Profil ionvladescu | Cod sursa (job #2497712) | Cod sursa (job #3185320)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int x, y;
int n, m, v[100001], arbint[400001];
int query(int ind, int st, int dr)
{
if(st>=x && dr<=y) return arbint[ind];
if(st>y || dr<x) return 200000;
int mij=(st+dr)/2;
int m1=query(ind*2, st, mij);
int m2=query(ind*2+1, mij+1, dr);
return min(m1, m2);
}
void creare(int ind, int st, int dr)
{
if(st==dr)
{
arbint[ind]=v[st];
return;
}
int mij=(st+dr)/2;
creare(ind*2, st, mij);
creare(ind*2+1, mij+1, dr);
arbint[ind]=min(arbint[ind*2], arbint[ind*2+1]);
}
void solve()
{
fout<<query(1, 1, n)<<"\n";
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>v[i];
creare(1, 1, n);
for(int i=1;i<=m;i++)
{
fin>>x>>y;
solve();
}
return 0;
}