Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define pb push_back
- #define mp make_pair
- #define forn( i, n ) for( ll i = 0; i < (ll) (n); i ++ )
- #define endl '\n'
- ll n, m, k;
- vector< ll > a;
- ll ans;
- int main( void ) {
- cin >> n >> m;
- forn( i, n ) {
- ll aa;
- cin >> aa;
- a.pb( aa );
- }
- for( ll i = 32; i >= 0; i -- ) {
- ll k = ( 1LL << i );
- vector< ll > res;
- forn( j, a.size() ) {
- if( a[j] & k ) {
- res.pb( j );
- }
- }
- if( res.size() % 2 ) {
- ans += k;
- continue;
- }
- vector< ll > b;
- ll l = 0;
- for( ll j = 0; j < res.size(); j += 2 ) {
- while( l < res[j] ) {
- b.pb( a[l] );
- l ++;
- }
- ll sum = 0;
- for( ll ii = res[j]; ii <= res[j + 1]; ii ++ )
- sum = sum ^ a[ii];
- b.pb( sum );
- l = res[j + 1] + 1;
- }
- while( l < a.size() ) {
- b.pb( a[l] );
- l ++;
- }
- if( b.size() < m ) {
- ans += k;
- continue;
- }
- a = b;
- }
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement