Advertisement
Guest User

Untitled

a guest
May 19th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. //============================================================================
  2. // Name        : ANDROUND.cpp
  3. // Author      : Shaka
  4. // Version     :
  5. // Copyright   : Your copyright notice
  6. // Description : Hello World in C++, Ansi-style
  7. //============================================================================
  8.  
  9. #include <cstdio>
  10. #include <algorithm>
  11. using namespace std;
  12. const int MAXN = 20000;
  13. const int MAXLOG = 13;
  14. int table[2][MAXN][MAXLOG], nums[MAXN];
  15. int logs[(MAXN >> 1) + 1];
  16. inline void compute_logs() {
  17.     register int e = 0, i;
  18.     for (i = 2, logs[1] = 0; i <= 10000; ++i)
  19.         logs[i] = ((i == 1 << (e + 1)) ? ++e : e);
  20. }
  21. int main() {
  22.     register int cas, N, K, i, j, x, k, l, ans;
  23.     compute_logs();
  24.     for (scanf("%d", &cas); cas--;) {
  25.         scanf("%d %d", &N, &K);
  26.         for (i = 0; i < N; ++i)
  27.             scanf("%d", nums + i);
  28.         K = min(K, N >> 1);
  29.         for (i = 0; i < N; ++i) {
  30.             table[0][i][0] = nums[i] & nums[(i + 1) % N];
  31.             table[1][i][0] = nums[i] & nums[(i - 1 + N) % N];
  32.         }
  33.         for (j = 1; (x = 1 << j) <= K; ++j)
  34.             for (i = 0; i < N; ++i) {
  35.                 table[0][i][j] = table[0][i][j - 1] & table[0][(i + x) % N][j - 1];
  36.                 table[1][i][j] = table[1][i][j - 1] & table[1][(i - x + N) % N][j - 1];
  37.             }
  38.         for(i = 0; i < N; ++i){
  39.             x = 1 << (l = logs[K]);
  40.             j = (i + K - x) % N;
  41.             k = (i - K + x + N) % N;
  42.             ans = table[0][i][l] & table[0][j][l] & table[1][i][l]& table[1][k][l];
  43.             printf("%d%c", ans, i == N - 1 ? '\n' : ' ');
  44.         }
  45.  
  46.     }
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement