fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int lli;
  4.  
  5. vector < vector <bool> > grid(1001, vector <bool> (1001));
  6.  
  7. int main()
  8. {
  9. ios_base::sync_with_stdio(false);
  10. cin.tie(NULL);
  11. cout.tie(NULL);
  12.  
  13. int t;
  14. cin >> t;
  15. while (t--)
  16. {
  17. int n, m;
  18. cin >> n >> m;
  19. int j = 0, i = 0;
  20. vector <lli> v;
  21. v.push_back(n * m);
  22. for (int k = 1; k <= n * m - 1; k++)
  23. {
  24. lli curans = 0;
  25. for (; j < m;)
  26. {
  27. grid[i][j] = 1;
  28. curans++;
  29. j += (k + 1) % m;
  30. i += (k + 1) / m;
  31. }
  32. j = 0, i = 0;
  33. for (; i < n;)
  34. {
  35. if (i < 0 or i >= grid.size() or j < 0 or j >= grid[i].size())
  36. cout << "out-of-range error:",
  37. cout << " i = " << i,
  38. cout << ", j = " << j,
  39. cout << ", k = " << k,
  40. exit(0);
  41.  
  42. if (!grid[i][j])
  43. {
  44. grid[i][j] = 1;
  45. curans++;
  46. }
  47. j += (k + 1) / n;
  48. i += (k + 1) % n;
  49. }
  50.  
  51. v.push_back(curans);
  52.  
  53. for (; j < m;)
  54. {
  55. grid[i][j] = 0;
  56. int diff = k + 1;
  57. j += diff % m;
  58. i += diff / m;
  59. }
  60. j = 0, i = 0;
  61. for (; i < n;)
  62. {
  63. grid[i][j] = 0;
  64. int diff = k + 1;
  65. j += diff / n;
  66. i += diff % n;
  67. }
  68. }
  69. for (auto x : v)
  70. {
  71. cout << x << " ";
  72. }
  73. }
  74.  
  75. return 0;
  76. }
Success #stdin #stdout 0s 4412KB
stdin
1
2 3
stdout
out-of-range error:  i = 0, j = 1001, k = 1