fork download
  1. //#pragma GCC optimize "trapv"
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. //#include <ext/pb_ds/assoc_container.hpp>
  5. //#include <ext/pb_ds/tree_policy.hpp>
  6. //using namespace __gnu_pbds;
  7. //find_by_order(k) returns iterator to kth element starting from 0;
  8. //order_of_key(k) returns count of elements strictly smaller than k;
  9. //erase,insert same as normal set
  10.  
  11. //#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
  12. #define fast ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
  13. #define f first
  14. #define s second
  15. #define pb push_back
  16. #define eb emplace_back
  17. #define mp make_pair
  18. #define forn(i,n) for(int i=0;i<n;++i)
  19. #define show(b) for(auto const&x: b) cout<<x<<" "
  20. #define sshow(b) for(auto x:b) cout<<x<<" "
  21. #define fix(b,val) memset(b,val,sizeof(b))
  22. #define pill(b,n,v) fill(b,b+n,v)
  23. #define itn int
  24. #define w(t) int t;cin>>t;while(t--)
  25. #define intmax INT_MAX
  26. #define intmin INT_MIN
  27. #define nl "\n"
  28. #define prt(val) cout<<val<<"\n"
  29. #define all(v) v.begin(),v.end()
  30. #define vt vector
  31. #define trace1(x) cerr<<#x<<": "<<x<<endl
  32. #define trace2(x, y) cerr<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
  33. #define trace3(x, y, z) cerr<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
  34. #define trace4(a, b, c, d) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl
  35. #define trace5(a, b, c, d, e) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<endl
  36. #define trace6(a, b, c, d, e, f) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<" | "<<#f<<": "<<f<<endl
  37.  
  38. typedef long long int ll;
  39. typedef long double LD;
  40. typedef unsigned long long int LL;
  41. typedef pair<int,int> pii;
  42. typedef pair<long long int,int> pli;
  43. typedef pair<int,long long int> pil;
  44. typedef pair<long long int,long long int> pll;
  45. const int N=1e5+5;
  46. const int mod=1e9+7;
  47. //mt19937 rnd(time(NULL));
  48.  
  49. /*------Global--------*/
  50.  
  51. /*-----Functions------*/
  52. template<typename T>
  53. void show2d(const vector<vector<T>>& adj)
  54. {
  55. for(auto x:adj)
  56. {
  57. for(auto y:x)
  58. {
  59. cout<<y<<" ";
  60. }
  61. cout<<"\n";
  62. }
  63. }
  64.  
  65. ll modexp(ll a,ll b,ll mod)
  66. {
  67. ll x=1;
  68. while(b)
  69. {
  70. if(b&1)
  71. x = ((x%mod) * (a%mod))%mod;
  72. a = ((a%mod) * (a%mod))%mod;
  73. b = b / 2;
  74. }
  75. return x;
  76. }
  77.  
  78. bool ispalindrome(ll n)
  79. {
  80. ll rev=0,n1=n;
  81. while(n1>0)
  82. {
  83. rev=rev*10+n1%10;
  84. n1/=10;
  85. }
  86. return (n==rev);
  87. }
  88.  
  89. void rf()
  90. {
  91. #ifndef ONLINE_JUDGE
  92. freopen("input.txt", "r", stdin);
  93. freopen("output.txt", "w", stdout);
  94. #endif
  95. }
  96.  
  97. void solve() {
  98. int n,m;
  99. cin>>n>>m;
  100. ll a[n][m];
  101. forn(i,n)
  102. forn(j,m)
  103. cin>>a[i][j];
  104.  
  105. int tr = n/2;
  106. int tc = m/2;
  107.  
  108. ll ans=0;
  109.  
  110. for(int i=0; i<tr; ++i) {
  111. for(int j=0; j<tc; ++j) {
  112. ll p1 = a[i][j];
  113. ll p2 = a[n-i-1][j];
  114. ll p3 = a[i][m-j-1];
  115. ll p4 = a[n-i-1][m-j-1];
  116.  
  117. array<ll,4> vals = {p1, p2, p3, p4};
  118. sort(vals.begin(), vals.end());
  119. ll avg = vals[2];
  120. for(auto x:vals)
  121. ans += abs(x-avg);
  122. }
  123. }
  124.  
  125. if(n&1) {
  126. int i=0;
  127. int j=m-1;
  128. ll subans = 0;
  129. while(i<j) {
  130. if(a[n/2][i] != a[n/2][j]){
  131. ans += abs(a[n/2][i] - a[n/2][j]);
  132. }
  133. ++i;
  134. --j;
  135. }
  136. }
  137.  
  138. if(m&1) {
  139. int i=0;
  140. int j=n-1;
  141. ll subans =0;
  142. while(i<j) {
  143. if(a[i][m/2] != a[j][m/2]) {
  144. ans += abs(a[i][m/2] - a[j][m/2]);
  145. }
  146. ++i;
  147. --j;
  148. }
  149. }
  150.  
  151. cout<<ans<<nl;
  152. }
  153.  
  154. int32_t main()
  155. {
  156. fast;
  157. // rf();
  158. w(t)
  159. {
  160. solve();
  161. }
  162. }
Success #stdin #stdout 0s 4524KB
stdin
3
6 9
1 0 9 9 7 0 6 4 0
4 9 9 1 5 1 0 2 4
2 7 3 2 9 4 4 2 10
6 10 2 8 8 1 3 5 0
1 6 9 4 9 1 6 1 5
3 7 10 7 3 1 9 2 4
8 7
4 0 5 9 6 2 3
1 0 4 4 4 5 8
4 8 9 5 0 5 10
5 4 10 10 1 1 3
1 3 0 3 9 6 7
10 9 9 7 8 2 3
4 9 10 4 8 5 10
7 6 6 6 9 9 3
6 10
3 9 7 8 10 0 0 7 4 8
9 0 3 8 2 8 8 6 1 8
5 5 1 1 2 8 6 3 8 6
10 5 0 4 4 1 0 10 7 1
9 4 9 6 1 5 3 4 3 3
0 1 3 8 10 0 10 2 2 9
stdout
109
131
146