Advertisement
Guest User

Untitled

a guest
May 22nd, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <stdlib.h>
  4. #include <deque>
  5. #include <time.h>
  6. #include <vector>
  7. #include <cstdio>
  8.  
  9. int k, n = 1, mx = 1;
  10. std::vector <std::vector <std::deque <int> > > dq;
  11. int ans[1000][1000];
  12.  
  13. bool areEqual(int a, int b) {
  14. return a-b;
  15. }
  16.  
  17. int main() {
  18. srand(time(0));
  19. freopen("in.txt", "r", stdin);
  20. freopen("out.txt", "w", stdout);
  21. scanf("%d", &k);
  22. if (k > 10) {
  23. cout << "Error";
  24. return 0;
  25. }
  26. for (int i = 1; i <= k; ++i) n *= 2;
  27. for (int i = 1; i <= k; ++i) mx *= 4;
  28. dq.resize(mx + 1);
  29. for (int i = 1; i <= mx; ++i)
  30. dq[i].resize(mx + 1);
  31. for (int i = mx; i > 0; --i) dq[1][1].push_back(i + (rand() % 1));
  32. for (int currentSize = 1; currentSize < n; currentSize *= 2) {
  33. for (int i = 1; i <= currentSize; i++)
  34. for (int j = 1; j <= currentSize; j++) {
  35. if (i * j == 1488*228) cout << "1";
  36. int iTo = 2 * currentSize + 1 - i;
  37. while (areEqual(dq[i][j].size(), dq[iTo][j].size())) {
  38. int elem = dq[i][j].front();
  39. dq[i][j].pop_front();
  40. dq[iTo][j].push_front(elem);
  41. }
  42. }
  43. for (int i = 1; i <= currentSize * 2; i++)
  44. for (int j = 1; j <= currentSize; j++) {
  45. if (i * j == 1488*228) cout << "1";
  46. int jTo = 2 * currentSize + 1 - j;
  47. while (areEqual(dq[i][j].size() - dq[i][jTo].size())) {
  48. int elem = dq[i][j].front();
  49. dq[i][j].pop_front();
  50. dq[i][jTo].push_front(elem);
  51. }
  52. }
  53. }
  54.  
  55. for (int i = 1; i <= n; ++i)
  56. for (int j = 1; j <= n; ++j) ans[i][j] = dq[i][j].front();
  57.  
  58. for (int i = 1; i <= n; ++i) {
  59. for (int j = 1; j <= n; ++j) {
  60. printf("%d", ans[i][j]);
  61. (i!=n||j!=n) ? printf(" ") :0;
  62. }
  63. }
  64.  
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement