Advertisement
Guest User

Untitled

a guest
Mar 1st, 2015
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ll              long long
  6. #define pb              push_back
  7. #define mp              make_pair
  8. #define forn( i, n )    for( ll i = 0; i < (ll) (n); i ++ )
  9. #define endl            '\n'
  10.  
  11. ll n, m, k;
  12. vector< ll > a;
  13. ll ans;
  14.  
  15. int main( void ) {
  16.     cin >> n >> m;
  17.     forn( i, n ) {
  18.         ll aa;
  19.         cin >> aa;
  20.         a.pb( aa );
  21.     }
  22.     for( ll i = 32; i >= 0; i -- ) {
  23.         ll k = ( 1LL << i );
  24.         vector< ll > res;
  25.         forn( j, a.size() ) {
  26.             if( a[j] & k ) {
  27.                 res.pb( j );
  28.             }
  29.         }
  30.         if( res.size() % 2 ) {
  31.             ans += k;
  32.             continue;
  33.         }
  34.         vector< ll > b;
  35.         ll l = 0;
  36.         for( ll j = 0; j < res.size(); j += 2 ) {
  37.             while( l < res[j] ) {
  38.                 b.pb( a[l] );
  39.                 l ++;
  40.             }
  41.             ll sum = 0;
  42.             for( ll ii = res[j]; ii <= res[j + 1]; ii ++ )
  43.                 sum = sum ^ a[ii];
  44.             b.pb( sum );
  45.             l = res[j + 1] + 1;
  46.         }
  47.         while( l < a.size() ) {
  48.             b.pb( a[l] );
  49.             l ++;
  50.         }
  51.         if( b.size() < m ) {
  52.             ans += k;
  53.             continue;
  54.         }
  55.         a = b;
  56.     }
  57.     cout << ans << endl;
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement