Pagini recente » Cod sursa (job #1650701) | Cod sursa (job #255699) | Cod sursa (job #1318575) | Cod sursa (job #3242097) | Cod sursa (job #2252971)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("rmq.in");
ofstream fo("rmq.out");
int log[100006],dp[21][100006],n,m,first,second;
/// i putere de 2
int main()
{
log[0]=0;
log[1]=0;
fi>>n>>m;
for(int i=2; i<=n; i++)
log[i]=log[i/2]+1;
for(int i=0; i<n; i++)
fi>>dp[0][i];
for(int i=1; i<=log[n]; i++)
for(int j=0; j<(n-(1<<i)+1); j++)
{
dp[i][j]=min(dp[i-1][j],dp[i-1][j+(1<<i-1)]);
}
for(int k=1; k<=m; k++)
{
fi>>first>>second;
first--;
second--;
int lungime=second-first+1;
int lg=log[lungime];
fo<<min(dp[lg][first],dp[lg][second-(1<<lg)+1])<<endl;
}
return 0;
}