Pagini recente » Cod sursa (job #142386) | Cod sursa (job #703783) | Cod sursa (job #2826682) | Cod sursa (job #782614) | Cod sursa (job #2620761)
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAX_LENGTH = 1e5 + 1;
int main(){
int n,m;
int mat[MAX_LENGTH][18];
ifstream f("rmq.in");
ofstream g("rmq.out");
f >> n >> m;
for (int i = 1; i <= n; ++i)
f >> mat[i][0];
for (int i = 1; i <= 18; ++i)
for (int j = 1; j <= n - (1 << (i)) + 1; ++j)
mat[j][i] = min(mat[j][i - 1], mat[j + (1 << (i - 1))][i - 1]);
int stanga, dreapta;
int poz;
for (int i = 1; i <= m; ++i){
f >> stanga >> dreapta;
int poz = log2(dreapta - stanga + 1);
g << min(mat[stanga][poz], mat[dreapta - (1 << poz ) + 1][poz]) << "\n";
}
}