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

#define endl "\n"
#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);

typedef long long int ll;

ll mod=1e9+7;
ll a[200010];
ll b[200010];
ll tc,i,j,k,n,m,x;
string s,s1,s2;

vector< pair<ll,ll> > v;

int main(){

    IOS

    cin>>tc;

    while(tc--){
            v.clear();
            cin>>n>>k;

            for(i=0;i<=n;i++){

                ll need=0;
                for(j=0;j<=18;j++){
                   bool have=( i&(1LL<<j) );
                   bool check=( k&(1LL<<j) );

                   if(have!=check)
                   need= need|(1LL<<j);


                }

                if( (i+need)<=n )
                    v.push_back(make_pair(i,need));

            }

            for(i=0;i<n;i++){
                cin>>a[i];
                b[i]=a[i];
            }

            for(i=0;i<n/2;i++)
                swap(b[i],b[n-i-1]);


            for(i=1;i<n;i++)
                a[i]+=a[i-1];

            for(i=1;i<n;i++)
                b[i]+=b[i-1];

            ll ans=0;

            for(auto x:v){
                ll ff=x.first;
                ll ss=x.second;

                ll p=0,s=0;

                if(ff)
                p=a[ff-1];

                if(ss)
                s=b[ss-1];

                ans=max(ans,p+s);

            }

            cout<<ans<<endl;


    }

}
Copy
Midterms AshcoOoOdel
GNU G++17
65 ms
5.2 MB
Accepted