fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <random>
  5.  
  6. using namespace std;
  7.  
  8. int a[60][60];
  9.  
  10. int main() {
  11. int T;
  12. cin >> T;
  13. mt19937 mt(123);
  14. while (T--) {
  15. int n;
  16. cin >> n;
  17. vector<int> can(1024);
  18. vector<int> p(n);
  19. int curr = 0;
  20. for (int i = 0; i < n; i++) {
  21. for (int j = 0; j < n; j++) {
  22. cin >> a[i][j];
  23. }
  24. p[i] = i;
  25. curr ^= a[i][i];
  26. }
  27. for (int ii = 0; ii < 6000000; ii++) {
  28. can[curr]++;
  29. int i = uniform_int_distribution<int>(0, n - 1)(mt);
  30. int j = uniform_int_distribution<int>(0, n - 1)(mt);
  31. curr ^= a[i][p[i]];
  32. curr ^= a[j][p[j]];
  33. swap(p[i], p[j]);
  34. curr ^= a[i][p[i]];
  35. curr ^= a[j][p[j]];
  36. if (can[curr] >= 100) {
  37. curr ^= a[i][p[i]];
  38. curr ^= a[j][p[j]];
  39. swap(p[i], p[j]);
  40. curr ^= a[i][p[i]];
  41. curr ^= a[j][p[j]];
  42. }
  43. }
  44. for (int i = 0; i < 1024; i++) {
  45. if (can[i]) cout << i << ' ';
  46. }
  47. cout << endl;
  48. }
  49. }
  50.  
Success #stdin #stdout 0s 15248KB
stdin
Standard input is empty
stdout
Standard output is empty