Advertisement
Guest User

Untitled

a guest
Apr 1st, 2016
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int N, K, X, Z = 0;
  5. long long V;
  6. map<int,long long> U;
  7.  
  8. inline int findMSB(long long &v)
  9. {
  10.     for (int i = K; i >= 0; i--)
  11.         if (v & (1LL<<i)) return i;
  12.     return -1;
  13. }
  14.  
  15. int main()
  16. {
  17.     ios_base::sync_with_stdio(false);
  18.     scanf("%d %d", &N, &K);
  19.     for (int i = 0; i < N; i++)
  20.     {
  21.         int MSB = -1;
  22.         V = 0;
  23.         for (int j = 0; j < K; j++)
  24.         {
  25.             scanf("%d", &X);
  26.             if (X&1) { V |= (1LL<<(K-1-j)); MSB = max(MSB,K-1-j); }
  27.         }
  28.         while (V && U.find(MSB) != U.end())
  29.         {
  30.             V ^= U[MSB];
  31.             MSB = findMSB(V);
  32.         }
  33.         U[MSB] = V;
  34.     }
  35.     if (U.size() == K+1) printf("N\n");
  36.     else printf("S\n");
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement