Pagini recente » Cod sursa (job #2944060) | Cod sursa (job #2039917) | Cod sursa (job #1382494) | Cod sursa (job #2922287) | Cod sursa (job #2100343)
#include <fstream>
using namespace std;
ifstream F("rmq.in");
ofstream G("rmq.out");
int n, m, lg[100005], d[20][100005], x, y;
int main()
{
F >> n >> m;
for( int i = 1; i <= n; ++ i ) F >> d[0][i];
for( int i = 2; i <= n; ++ i )
lg[i] = lg[i/2]+1;
for( int i = 1; i <= lg[n]; ++ i )
for( int j = 1; j + (1<<i) - 1 <= n; ++ j )
d[i][j] = min(d[i-1][j], d[i-1][j+(1<<(i-1))]);
while(m--)
{
F >> x >> y;
G << min( d[lg[y-x+1]][x], d[lg[y-x+1]][y-(1<<lg[y-x+1])+1] ) << '\n';
}
return 0;
}