题解 | #特殊的极差#

特殊的极差

https://www.nowcoder.com/practice/987311ec16e44c588a4b71101cb3121c

#include <bits/stdc++.h> 

using namespace std;

int main(){
    ios::sync_with_stdio(0); 
    cin.tie(0);cout.tie(0);
    int n,x,y,z;
    cin>>n>>x>>y>>z;
    vector<int> a(n);
    multiset<int> s;// 利用 multiset对基本数据类型的顺序存储!
    for(int i = 0; i < n; i++){
        cin >> a[i];
    }
    int l(0),r(-1);
    int ans(0);
    while(r < n){
        s.insert(a[++r]);
        while(l <= r && (*s.rbegin())*x - (*s.begin())*y > z){
            s.erase(s.find(a[l++]));
        }
        ans = max(ans,r-l+1);
    }
    cout<< ans << endl;
    return 0;
}

全部评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务