fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. string ltrim(const string &);
  6. string rtrim(const string &);
  7. vector<string> split(const string &);
  8.  
  9.  
  10.  
  11. // Complete the countSpecialElements function below.
  12. int countSpecialElements(vector<vector<int>> matrix) {
  13.  
  14. int m=matrix.size();
  15. int n=matrix[0].size();
  16. int rowmax[m], rowmin[m];
  17. int colmax[n], colmin[n];
  18.  
  19. // Find rminn and rmaxx for every row
  20. for (int i = 0; i < m; i++) {
  21. int rminn = INT_MAX;
  22. int rmaxx = INT_MIN;
  23. for (int j = 0; j < n; j++) {
  24. if (matrix[i][j] > rmaxx)
  25. rmaxx = matrix[i][j];
  26. if (matrix[i][j] < rminn)
  27. rminn = matrix[i][j];
  28. }
  29. rowmax[i] = rmaxx;
  30. int count1=0;
  31. for(int k=0;k<n;k++){
  32. if(rowmax[i]==matrix[i][k])
  33. count1++;
  34. }
  35. if(count1>1)
  36. return -1;
  37. count1=0;
  38. rowmin[i] = rminn;
  39. for(int k=0;k<n;k++){
  40. if(rowmin[i]==matrix[i][k])
  41. count1++;
  42. }
  43. if(count1>1)
  44. return -1;
  45. }
  46.  
  47. // Find cminn and cmaxx for every column
  48. for (int j = 0; j < n; j++) {
  49. int cminn = INT_MAX;
  50. int cmaxx = INT_MIN;
  51. for (int i = 0; i < m; i++) {
  52. if (matrix[i][j] > cmaxx)
  53. cmaxx = matrix[i][j];
  54. if (matrix[i][j] < cminn)
  55. cminn = matrix[i][j];
  56. }
  57.  
  58. colmax[j] = cmaxx;
  59. int count1=0;
  60. for(int k=0;k<m;k++){
  61. if(colmax[j]==matrix[k][j])
  62. count1++;
  63. }
  64.  
  65. if(count1>1)
  66. return -1;
  67. colmin[j] = cminn;
  68. for(int k=0;k<m;k++){
  69. if(colmin[j]==matrix[k][j])
  70. count1++;
  71. }
  72. if(count1>1)
  73. return -1;
  74. }
  75.  
  76. // Check for optimal element
  77. int count = 0;
  78. for (int i = 0; i < m; i++) {
  79. for (int j = 0; j < n; j++) {
  80. if ((matrix[i][j] == rowmax[i])
  81. || (matrix[i][j] == rowmin[i])
  82. || (matrix[i][j] == colmax[j])
  83. || (matrix[i][j] == colmin[j])) {
  84. count++;
  85. }
  86. }
  87. }
  88.  
  89. return count;
  90. }
  91.  
  92.  
  93. int main() {
  94. int m,n,x;
  95. cin>>m>>n;
  96. vector<vector<int> > v(m,vector<int> (n));
  97. for(int i=0;i<m;i++){
  98. for(int j=0;j<n;j++){
  99. cin>>x;
  100. v[i][j]=x;
  101. }
  102. }
  103. cout<<countSpecialElements(v);
  104. return 0;
  105. }
Success #stdin #stdout 0s 4576KB
stdin
1 3
1 2 4
stdout
-1