Pagini recente » Cod sursa (job #2754057) | Cod sursa (job #3155660) | Cod sursa (job #3134106) | Cod sursa (job #3153211) | Cod sursa (job #2754066)
#include <bits/stdc++.h>
using namespace std;
int RMQ[100][100001],v[100001],lg[100001];
int main()
{
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int i,j,n,m, prim, sec,z,d,log;
fin >> n >> m;
for( i = 1; i <= n; i++)
fin>> v[i];
for(i = 1; i <= n; i++)
RMQ[0][i] = v[i];
for( i = 1; pow(2,i) <= n; i++)
for ( j = 1; j+pow(2,i)-1<=n; j++)
RMQ[i][j] = min(RMQ[i - 1][j], RMQ[i - 1][j + (1<<(i-1))]);
lg[1] = 0;
for(i=2; i <= n; i++)
lg[i] = lg[ i/2] + 1;
for (i = 0; i < m; i++)
{
fin>> prim >> sec;
z = sec - prim + 1;
log = lg[z];
d = z - (pow(2,log));
fout<< min( RMQ[log][prim],RMQ[log][prim+d])<<'\n';
}
return 0;
}