Pagini recente » Cod sursa (job #3159315) | Cod sursa (job #2319259) | Cod sursa (job #2956562) | Cod sursa (job #1456847) | Cod sursa (job #3242148)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define F first
#define S second
#define endl '\n'
#define all(a) (a).begin(),(a).end()
using namespace std;
const ll maxn=2*1e5+5;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
vector<vector<ll>>adj(maxn,vector<ll>());
vector<ll>segt(4*maxn),a(maxn);
void build(ll node,ll l, ll r){
if(l==r) segt[node]=a[l];
else{
ll mid=(l+r)/2;
build(2*node,l,mid);
build(2*node+1,mid+1,r);
segt[node]=min(segt[2*node],segt[2*node+1]);
}
}
ll query(ll node,ll st,ll dr,ll l,ll r){
// interogare pentru un interval fara lazy
if(st>=l && dr<=r) return segt[node];
ll mid=(st+dr)/2;
ll left=1e9,right=1e9;
if(l<=mid) left=query(2*node,st,mid,l,r);
if(r>mid) right=query(2*node+1,mid+1,dr,l,r);
return min(left,right);
}
int main(){
ll n,q;
fin >> n >> q;
for(ll i=1;i<=n;i++){
fin >> a[i];
}
build(1,1,n);
while(q--){
ll a,b;
fin >> a >> b;
// cout << "ans=";
fout << query(1,1,n,a,b) << endl;
}
return 0;
}