Pagini recente » Cod sursa (job #2179576) | Cod sursa (job #1670443) | Cod sursa (job #2228576) | Cod sursa (job #1911203) | Cod sursa (job #400551)
Cod sursa(job #400551)
#include<fstream>
#define max 100005
using namespace std;
int M[18][max];
int V[max],n,m,Log[max];
inline int min(int a, int b){ return a<b?a:b; }
int main(){
ifstream f("rmq.in");
ofstream g("rmq.out");
int i,j;
f>>n>>m;
for(i=1;i<=n;i++) f>>V[i];
for(i=1;i<=n;i++) M[0][i] = V[i];
for( i=1; (1<<i) <= n; i++)
for(j=1;j <= n - ( 1<<i ) + 1 ; j++){
int l = 1<<(i-1);
M[i][j] = min( M[i-1][j],M[i-1][j+l] );
}
Log[1]=0;
for(i=2;i<=n;i++)Log[i] = 1+Log[i/2];
while( m-- ){
f>>i>>j;
int k = Log[j-i+1];
g<<min( M[k][i], M[k][j - (1<<k)+1])<<'\n';
}
return 0;
}