Pagini recente » Cod sursa (job #2257498) | Cod sursa (job #2606442) | Cod sursa (job #2301480) | Cod sursa (job #1959677) | Cod sursa (job #3223278)
#include "bits/stdc++.h"
const int DIM = 100004;
const int LOG = 17;
int v[DIM],rmq[LOG][DIM];
int n,q;
char c;
bool parsare(int &x) {
int semn = 1;
if (c == -1) {
return false;
}
while ((c = getchar()) && c == ' ');
if (c == -1) {
return false;
}
if (c == '-') {
semn = -1;
c = getchar();
}
x = 0;
while (isdigit(c)) {
x = x * 10 + (c - '0');
c = getchar();
}
x *= semn;
return true;
}
inline static void RMQ_RMQ_RMQ(){
int log = std::log2(n);
for(int i = 1; i < log+1; i++){
for(int j = 0; j+(1 << i) <= n; j++){
rmq[i][j] = std::min(rmq[i-1][j],rmq[i-1][j+(1 << (i-1))]);
}
}
}
inline static int query(int st, int dr){
int i = std::log2(dr-st+1);
return std::min(rmq[i][st],rmq[i][dr-(1<<i) + 1]);
}
inline static void solve(){
parsare(n); parsare(q);
for(int i = 0; i < n; i++){
parsare(v[i]);
rmq[0][i] = v[i];
}
RMQ_RMQ_RMQ();
while(q--){
int st,dr;
parsare(st);
parsare(dr);
std::cout << query(st-1,dr-1) << '\n';
}
}
signed main(){
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
solve();
return 0;
}