Pagini recente » Cod sursa (job #2319276) | Cod sursa (job #1191407) | Borderou de evaluare (job #1796769) | Cod sursa (job #3182311) | Cod sursa (job #1191405)
#include <fstream>
#include <math.h>
using namespace std;
ifstream ka("rmq.in");
ofstream ki("rmq.out");
int a[100005], b[100005][20], n, m, x, y;
int main()
{
ka >> n >> m;
for(int i = 1; i <= n; i++)
{
ka >> a[i];
b[i][0] = a[i];
}
for(int j = 1 ; (1 << j) <= n; j++)
for(int i = 1; i <= n; i++)
b[i][j] = min(b[i][j-1], b[i+(1 << (j-1))][j-1]);
for(int i = 1; i <= m; i++)
{
ka >> x >> y;
if(x != y)
ki << min(b[x][(int)log2(y-x+1)], b[y - (1 << (int)log2(y-x+1)) +1][(int)log2(y-x+1)]) << '\n';
ki << a[x] << '\n';
}
}