有没有大佬帮我看看为什么E题过不了

#include <bits/stdc++.h>
using namespace std;

typedef double db;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

constexpr int N = 2e4+5;
constexpr int BIT=62;
constexpr int MOD=998244353;
constexpr db sml=1e-5;



int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n,k1,k2,res=0;
    cin>>n>>k1>>k2;
    vector<ll> a(n+1);
    vector<vector<vector<ll>>> bitPos(BIT+1,vector<vector<ll>>(2,vector<ll>()));
    for(int i=1;i<=n;i++) {
        cin>>a[i];
        for(int j=BIT;j>=0;j--) {
            bitPos[j][a[i]>>j&1].push_back(i);
        }
    }
    for(int l=1;l<=n;l++) {
        int st=n+1,ed=n+1;
        for(int j=BIT;j>=k1;j--) {
            int op=(a[l]>>j&1)^1;
            auto it=lower_bound(bitPos[j][op].begin(),bitPos[j][op].end(),l);
            int p= it==bitPos[j][op].end()?n+1:*it;
            if(j>=k2) ed=min(ed,p);
            else if(j>=k1) st=min(st,p);
        }
        res+=max(0,ed-st);
    }
    cout<<res<<endl;
    return 0;
}

全部评论

相关推荐

07-15 16:52
已编辑
门头沟学院 Java
周五投的,流程今天结束
投递地平线等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务