Pagini recente » Cod sursa (job #429406) | Cod sursa (job #2104245) | Cod sursa (job #391994) | Cod sursa (job #108665) | Cod sursa (job #688591)
Cod sursa(job #688591)
#include <fstream>
using namespace std;
ifstream fi("rmq.in");
ofstream fo("rmq.out");
int sir[100000], x , y, e,Min;
void rmq1(int i , int j , int pos) {
sir[pos]=min(e,sir[pos]);
if(i==j)return;
if(x>(i+j)/2)
rmq1((i+j)/2+1,j,pos*2+1);
else if(x<=(i+j)/2)
rmq1(i,(i+j)/2,pos*2);
}
void rmq2(int i , int j , int pos) {
if(x<=i&&y>=j)
Min=min(sir[pos],Min);
if(i==j)
return;
if(x<=(i+j)/2)
rmq2(i,(i+j)/2,pos*2);
if(y>(i+j)/2)
rmq2((i+j)/2+1,j,pos*2+1);
}
int main() {
int n , m ;
fi>>n>>m;
for(int i=0;i<=100000;i++)
sir[i]=200000000;
for(int i=1; i<=n; i++) {
fi>>e;
x=i;
rmq1(1,n,1);
}
for(int i=1; i<=m; i++) {
fi>>x>>y;
Min=200000000;
rmq2(1,n,1);
fo<<Min<<'\n';
}
}