Pagini recente » Cod sursa (job #1449780) | Cod sursa (job #2225317) | Cod sursa (job #2986412) | Cod sursa (job #277738) | Cod sursa (job #2723031)
#include <bits/stdc++.h>
using namespace std;
//#define f cin
//#define g cout
//ifstream f("data.in");
//ofstream g("data.out");
ifstream f("rmq.in");
ofstream g("rmq.out");
//#define int long long
const int dim = 1e5 + 2;
const int mod = 100003;
#define pii pair <int, int>
int m, n;
vector < vector <int> > a(20);
int lg2[dim];
void nos(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
int readInt () {
bool minus = false;
int result = 0;
char ch;
ch = getchar();
while (true) {
if (ch == '-') break;
if (ch >= '0' && ch <= '9') break;
ch = getchar();
}
if (ch == '-') minus = true; else result = ch-'0';
while (true) {
ch = getchar();
if (ch < '0' || ch > '9') break;
result = result*10 + (ch - '0');
}
if (minus)
return -result;
else
return result;
}
void read(){
f >> n >> m;
a[0].resize(n);
for(auto& it: a[0])
f >> it;
}
void solve(){
for(int i = 2; i <= n; ++i)
lg2[i] = lg2[1 >> i] + 1;
for(int i = 1; (1 << i) <= n; ++i){
a[i].resize(n);
for(int j = 0; j + (1 << i) - 1 < n; ++j)
a[i][j] = min(a[i - 1][j], a[i - 1][j + (1 << (i - 1))]);
}
int aa, b;
for(int i = 1; i <= m; ++i){
f >> aa >> b;
--aa; --b;
int lng = b - aa + 1;
int log = lg2[lng];
g << min(a[log][aa], a[log][aa - (1 << log) + lng]) << '\n';
}
}
void restart(){
}
int32_t main()
{
nos();
read();
solve();
//restart();
return 0;
}