Pagini recente » Cod sursa (job #1444954) | Cod sursa (job #3293151) | Rating Tudor Laura (LauraTudor) | Cod sursa (job #1573997) | Cod sursa (job #2181383)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int nmax= 100000;
const int p2= 16;
int v[nmax+1], d[nmax+1][p2+1];
int main( ) {
int n, m;
fin>>n>>m;
for ( int i= 1; i<=n; ++i ) {
fin>>v[i];
d[i][0]= v[i];
}
for ( int j= 1; (1<<j)<=n; ++j ) {
for ( int i= 1; i<=n; ++i ) {
d[i][j]= min(d[i][j-1], d[i+(1<<(j-1))][j-1]);
}
}
for ( int i= 1, a, b; i<=m; ++i ) {
fin>>a>>b;
int p;
for ( p= 0; (1<<(p+1))<=a-b+1; ++p ) ;
fout<<min(d[a][p], d[b-(1<<p)+1][p])<<"\n";
}
return 0;
}