70TLE,求调
查看原帖
70TLE,求调
1256042
hyl2718281828楼主2024/8/23 15:29

用了快读也没过,不知道为什么

#include <iostream>
using namespace std;
const int N = 1e5+1;
int n,m,lg[N],f[N][17];
inline int read() {
	int x=0, f=1; char ch=getchar();
	while (ch < '0' || ch > '9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch >= '0' && ch <= '9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    n = read(); m = read();
    for (int i = 2; i <= n; i++) lg[i] = lg[i/2]+1;
    for (int i = 1; i <= n; i++) f[i][0] = read();
    for (int j = 1; j <= lg[n]; j++) for (int i = 1; i+(1<<j)-1 <= n; i++) f[i][j] = max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
    for (int l,r,t,i = 1; i <= m; i++) {
        l = read(); r = read();
        t = lg[r-l+1];
        cout << max(f[l][t],f[r-(1<<t)+1][t]) << endl;
    }
    return 0;
}
2024/8/23 15:29
加载中...