Pagini recente » Istoria paginii runda/un_ultim_efort | Cod sursa (job #1854968) | Monitorul de evaluare | Cod sursa (job #2539943) | Cod sursa (job #2723046)
#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);
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 = 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 x, y;
for(int i = 1; i <= m; ++i){
f >> x >> y;
--x; --y;
int log = log2(y - x + 1);
g << min(a[log][x], a[log][y + 1 - (1 << log)]) << '\n';
}
}
void restart(){
}
int32_t main()
{
nos();
read();
solve();
//restart();
return 0;
}