#include #include #include #include #include #define nMax 50003 #define mMax 30 #define INF 2000000000000000 using namespace std; //ifstream cin("000.in"); //ofstream cout("000.out"); int n, m, nrSol; long long Sol, distMin; int mat[nMax][mMax], newMat[nMax][mMax], v[nMax], height[mMax]; int comp(int a, int b) { for(int i=1; i<=m; i++) { if(mat[a][i]mat[b][i]) return 0; } return 0; } int cmp(int a, int b) { return comp(a, b); } long long int abs(long long int val) { if(val<0) return -val; return val; } int main() { cin>>n>>m; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) cin>>mat[i][j]; v[i]=i; } sort(v+1, v+n+1, cmp); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) newMat[i][j]=mat[v[i]][j]; for(int j=1; j<=m; j++) { long long nrDist=0; for(int i=1; i<=n; i++) nrDist+=newMat[i][j]; int rez=nrDist/n; int jos=rez, sus=rez+1; long long potJos=0, potSus=0; for(int i=1; i<=n; i++) { potJos+=abs(newMat[i][j]-jos); potSus+=abs(newMat[i][j]-sus); } if(potJos<=potSus) { Sol+=potJos; height[j]=jos; } else { Sol+=potSus; height[j]=sus; } } cout<