萌新第一天学c艹 , 大神求调
查看原帖
萌新第一天学c艹 , 大神求调
1033456
Mecedes_AMG_ONE楼主2023/8/1 10:12
#include <bits/stdc++.h>
using namespace std;
const int N = 110000;
int m , n;
int a[N];
int f[30][N];
void init()
{
    int M = log(m);
    for (int j = 0; j < M; j ++ ){
        for (int i = 1; i + (1 << j) - 1 <= n; i ++ ){
            if(!j) f[i][j] = a[i];
            else f[i][j] = min(f[i][j - 1] , f[i + (1 << j - 1)][j - 1]);
        }
    }
}
int query(int l, int r)
{
    int len = r - l + 1;
    int k = log(len) / log(2);
    return max(f[l][k], f[r - (1 << k) + 1][k]);
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> m >> n;
    for(int i = 1;  i <= m ; i++){
        cin >> a[i];
    }
    init();
    while(n --){
        int x , y;
        cin >> x >> y;
        cout << query(x , y) << " ";
    }
}
2023/8/1 10:12
加载中...