Pagini recente » Cod sursa (job #2130154) | Cod sursa (job #3221526) | Cod sursa (job #2722340) | Cod sursa (job #2434159) | Cod sursa (job #2999258)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int v[100005] , a[1005][1005] , n , q , log;
int querry(int st , int dr)
{
int lg = dr - st + 1;
int k = 0;
while((1 << k ) <= lg)
{
k++;
}
k--;
return min(a[k][st] , a[k][dr - ( 1 << k) + 1]);
}
int main()
{
f >> n >> q;
for ( int i = 1 ; i <= n ; i++)
{
f >> v[i];
a[0][i] = v[i];
}
log = 1;
while((1 << log) <= n)
log++;
log--;
for ( int i = 1 ; i <= log ; i++)
{
for ( int j = 1 ; j + (1 << (i - 1)) <= n ; j++)
{
a[i][j] = min(a[i - 1][j] , a[i - 1][j + ( 1 << ( i - 1))]);
}
}
for ( int i = 1 ; i <= q ; i++)
{
int x , y;
f >> x >> y;
g << querry(x , y) << '\n';
}
return 0;
}