Pagini recente » Cod sursa (job #954825) | Cod sursa (job #3283690) | Cod sursa (job #1618125) | Cod sursa (job #1840589) | Cod sursa (job #929840)
Cod sursa(job #929840)
#include <fstream>
using namespace std;
int i, n, k, sol, x, y, Log[100010], m, rmq[100010][20];
int main()
{
ifstream fi("rmq.in");
ofstream fo("rmq.out");
fi >> n >> m;
for(i = 2; i <= n; i++) Log[i] = Log[i/2] + 1;
for(i = 1; i <= n; i++)
{
fi >> x;
rmq[i][0] = x;
}
for(k = 1; (1<<k) <= n; k++)
for(i = 1; i <= n; i++)
{
if(i+(1<<(k-1)) <= n)
rmq[i][k] = min(rmq[i][k-1], rmq[i+(1<<(k-1))][k-1]);
else rmq[i][k] = rmq[i][k-1];
}
while(m--)
{
fi >> x >> y;
k = Log[y - x + 1];
sol = min(rmq[x][k], rmq[y - (1<<k) + 1][k]);
fo << sol << "\n";
}
return 0;
}