Pagini recente » Cod sursa (job #620752) | Cod sursa (job #1152549) | Cod sursa (job #2020760) | Cod sursa (job #1213152) | Cod sursa (job #334497)
Cod sursa(job #334497)
#include <iostream>
#include <fstream>
using namespace std;
#define nr 100002
#define NMAX 100002
#define MMAX 1000002
long i,n,m,I,J,a[NMAX],t[MMAX];
void build(long k, long beg, long end){
if(beg==end){
t[k]=a[beg];
return;
}
else {
build(k*2,beg,(beg+end)/2);
build(k*2+1,(beg+end)/2+1,end);
}
if(t[k*2]<=t[k*2+1])
t[k]=t[k*2];
else
t[k]=t[k*2+1];
}
long minim(long k, long beg, long end){
if (J<beg || I>end)
return nr;
if (I<=beg && J>=end)
return t[k];
long x=minim(k*2,beg,(beg+end)/2);
long y=minim(k*2+1,(beg+end)/2+1,end);
if(x<=y)
return x;
else
return y;
}
int main(){
ifstream fin("rmq.in");
fin >> n >> m;
for (i=1; i<=n; i++){
fin >> a[i];
}
build(1,1,n);
ofstream fout("rmq.out");
for (i=1; i<=m; i++){
fin >> I >> J;
fout << minim(1,1,n) << "\n";
}
return 0;
}