Pagini recente » Cod sursa (job #411909) | Cod sursa (job #2919412) | Cod sursa (job #2783658) | Cod sursa (job #1699595) | Cod sursa (job #652538)
Cod sursa(job #652538)
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
/*
*
*/
int main(int argc, char** argv) {
ofstream outfile ("rmq.out");
ifstream infile("rmq.in");
int n,m;
infile >> n;
infile >> m;
int log = (int)log2(n);
int st[n][ log + 1];
// cout << endl;
for ( int i=0; i<n; i++ ){
infile >> st[i][0];
// cout << " : " << st[i][0] << ", ";
}
//cout << endl;
for ( int k=1; k<=log; k++){
for ( int i=0; i<n; i++ ){
//int next = i + (1<<k);
st[i][k] = min( st[i][k-1], st[ min(n-1,i + (1<<(k-1) ) ) ][k-1] );
// cout << st[i][k] << ", " ;
}
//cout << endl;
}
for ( int i=0; i<m; i++){
int a;
int b;
infile >> a >> b;
a--; b--;
int logl = (int)log2( b - a + 1 );
int sol = min( st[a][logl], st[ b - ( 1<<logl) + 1 ][ logl ]);
outfile << sol << endl;
}
return 0;
}