Pagini recente » Cod sursa (job #339105) | Cod sursa (job #2335500) | Cod sursa (job #244213) | Cod sursa (job #2378128) | Cod sursa (job #964721)
Cod sursa(job #964721)
#include <fstream>
using namespace std;
const int MAX_N = 100002;
int N, M;
int v[MAX_N], A[MAX_N][20], log[MAX_N];
int main(){
ifstream f("rmq.in");
ofstream g("rmq.out");
f >> N >> M;
for(int i = 1; i <= N; ++i)
f >> v[i];
for(int i = 2; i <= N; ++i)
log[i] = log[i/2] + 1;
for(int i = 1; i <= N; ++i)
A[i][0] = v[i];
for(int j = 1; (1 << j) <= N; ++j)
for(int i = 1; i + (1 << j) - 1 <= N; ++i)
A[i][j] = min(A[i + (1 << (j-1))][j-1], A[i][j-1]);
for(int i = 1, x, y; i <= M; ++i){
f >> x >> y;
int k = log[y - x + 1];
g << min(A[x][k], A[y-(1 << k)+1][k]) << '\n';
}
f.close();
g.close();
return 0;
}