Pagini recente » Cod sursa (job #20520) | Cod sursa (job #1574095) | Cod sursa (job #1581758) | Cod sursa (job #1188797) | Cod sursa (job #1388250)
#include<fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int a[300001],b[100001],n,k,x,y;
void build(int nod,int x,int y){
if(x==y) a[nod]=b[x];
else{
int mid=(x+y)/2;
build(nod*2,x,mid);
build(nod*2+1,mid+1,y);
a[nod]=min(a[nod*2],a[nod*2+1]);
}
}
int ask(int nod,int x,int y,int xi,int yi){
if(xi<=x&&yi>=y) return a[nod];
else{
int min1=99999999999,mid=(x+y)/2;
if(xi<=mid) min1=min(min1,ask(2*nod,x,mid,xi,yi));
if(yi>mid) min1=min(min1,ask(2*nod+1,mid+1,y,xi,yi));
return min1;
}
}
int main(){
f>>n>>k;
for(int i=1;i<=n;i++) f>>b[i];
build(1,1,n);
while(k--){
f>>x>>y;
g<<ask(1,1,n,x,y)<<"\n";
}
//for(int i=1;i<=9;i++) g<<a[i]<<" ";
return 0;
}