Pagini recente » Cod sursa (job #2640598) | Cod sursa (job #940850) | Cod sursa (job #276662) | Cod sursa (job #546221) | Cod sursa (job #2739557)
#include <bits/stdc++.h>
#define pp pair< int, int >
using namespace std;
const int mxn = 100 * 1000 + 10;
const int mxm = 1000;
int n, m;
int v[ mxn ];
int rmq[ mxm ];
int sq;
inline int minInterval(int x, int y){
int sol = INT_MAX;
int i;
for(i = x; i % sq != 0; i++){
sol = min(sol, v[ i ]);
}
for(i; i < y / sq * sq; i += sq){
sol = min(sol, rmq[ i / sq ]);
}
for(i; i <= y; i++){
sol = min(sol, v[ i ]);
}
return sol;
}
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
cin>> n >> m;
sq = sqrt( n );
for(int i = 0; i <= sq; i++){
rmq[ i ] = INT_MAX;
}
for(int i = 0; i < n; i++){
cin>>v[ i ];
rmq[ i / sq ] = min(v[ i ], rmq[ i / sq ]);
}
for(int i = 0, x, y; i < m; i++){
cin>> x >> y;
cout<< minInterval(x - 1, y - 1 ) << '\n';
}
return 0;
}