Pagini recente » Cod sursa (job #467334) | Cod sursa (job #786352) | Cod sursa (job #2815811) | Cod sursa (job #1418225) | Cod sursa (job #838977)
Cod sursa(job #838977)
#include<fstream>
#define NMAX 100000
using namespace std;
ifstream f("rmq.in"); ofstream g("rmq.out");
int n, t, x, y, log[NMAX];
int D[20][NMAX]; // 2^20 este aproximativ 100000
int main()
{
f>>n>>t;
log[1] = 0;
for(int i = 2; i <= n; ++i) log[i] = log[i / 2] + 1;
for(int i = 1; i <= n; ++i) f>>D[0][i];
for(int i = 1; i <= log[n]; ++i)
for(int j = 1; j <= n - (1<<(i - 1)); ++j)
D[i][j] = min(D[i - 1][j], D[i - 1][j + (1<<(i - 1))]);
while(t--)
{
f>>x>>y;
int k = log[y - x + 1];
g<<min(D[k][x], D[k][y - (1<<k) + 1])<<'\n';
}
g.close();
return 0;
}