Pagini recente » Cod sursa (job #579913) | Cod sursa (job #2171211) | Cod sursa (job #284527) | Cod sursa (job #1379763) | Cod sursa (job #2577679)
/**
de lungime 2^i
0: 5 2 4 7 6 3 1 2
1: 2 2 4 6 3 1 1
2: 2 2 3 1 1
3: 1
**/
#include <fstream>
#include <cmath>
#define NMAX 100005
#define LOGNMAX (int)(log2(NMAX))
#define log(n) (int)(log2(n))
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int dp[LOGNMAX][NMAX];
int n, x, q;
void form_dp(){
for(int l = 1; (1<<l)<=n; l++){
for(int i=0; i + (1<<l) - 1 <n; i++)
dp[l][i] = min(dp[l-1][i], dp[l-1][i+(1<<(l-1))]);
}
}
void citire(){
f>>n>>q;
for(int i=0; i<n; i++){
f>>dp[0][i];
}
}
void query(){
int a, b; /// intervalul a-b
for(int i=1; i<=q; i++){
f>>a>>b;
a--;b--;
int val = log(b-a+1);
g<<min(dp[val][a], dp[val][b-(1<<(val))+1])<<'\n';
}
}
int main()
{
citire();
form_dp();
query();
return 0;
}