Pagini recente » Cod sursa (job #2077771) | Cod sursa (job #2839841) | Cod sursa (job #2426192) | Cod sursa (job #2949797) | Cod sursa (job #2780843)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int v[18][100001],m,n,i,j,mini,r,z,a,b,d;
int putere[100001];
int main()
{
fin >> n >> m;
for(i = 1; i <= n; i++)
fin >> v[0][i];
for(i = 1; 1<<i <= n; i++)
{
r = 1<<(i-1);
for(j = 1; j <= n-r; j++)
v[i][j] = min(v[i-1][j], v[i-1][j+r]);
}
for(int i = 1; 1<<i <= 100000; i++)
putere[1<<i] = i;
for(int i = 1; i <= 100000; i++)
if(!putere[i])
putere[i] = putere[i - 1];
for(i = 1; i <= m; i++)
{
fin >> a >> b;
d = putere[b-a+1];
fout << min(v[d][a], v[d][b - (1 << d) + 1]);
fout << '\n';
}
return 0;
}