#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define mp make_pair #define pb push_back #define all(x) (x).begin(),(x).end() #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef vector vb; typedef vector vi; typedef vector vvb; typedef vector vvi; typedef pair pii; const int INF=1<<29; const double EPS=1e-9; const int dx[]={1,0,-1,0,1,1,-1,-1},dy[]={0,-1,0,1,1,-1,-1,1}; int main() { int N, M; cin >> N >> M; vector> R(N, vector(M)); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cin >> R[i][j]; } } vector maR(M, 0); vector> maP(M); set P; P.insert(0); vector cnt(N, 0); for (int j = 0; j < M; j++) { maR[j] = R[0][j]; maP[j].insert(0); cnt[0]++; } cout << 1 << endl; for (int i = 1; i < N; i++) { for (int j = 0; j < M; j++) { if (maR[j] < R[i][j]) { maR[j] = R[i][j]; for(auto s : maP[j]) { cnt[s]--; if (cnt[s] == 0) P.erase(s); } maP[j].clear(); maP[j].insert(i); P.insert(i); cnt[i]++; } else if (maR[j] == R[i][j]) { maP[j].insert(i); P.insert(i); cnt[i]++; } } cout << P.size() << endl; } return 0; }