#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int r[ 50 ] ;
int c[ 50 ] ;
class Solution{
public :
int oddCells( int n, int m, vector< vector< int >> & ind) {
int i;
int res = 0 ;
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
r[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( m) ; i++ ) {
c[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( ind.size ( ) ) ; i++ ) {
r[ ind[ i] [ 0 ] ] ++ ;
}
for ( i= ( 0 ) ; i< ( ind.size ( ) ) ; i++ ) {
c[ ind[ i] [ 1 ] ] ++ ;
}
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( m) ; j++ ) {
res + = ( r[ i] + c[ j] ) % 2 ;
}
}
return res;
}
}
;
// cLay varsion 20191108-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int r[50], c[50];
//
// class Solution {
// public:
// int oddCells(int n, int m, vector<vector<int>>& ind) {
// int res = 0;
// rep(i,n) r[i] = 0;
// rep(i,m) c[i] = 0;
// rep(i,ind.size()) r[ind[i][0]]++;
// rep(i,ind.size()) c[ind[i][1]]++;
// rep(i,n) rep(j,m) res += (r[i] + c[j]) % 2;
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KaW50IHJbNTBdOwppbnQgY1s1MF07CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBpbnQgb2RkQ2VsbHMoaW50IG4sIGludCBtLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBpbmQpewogICAgaW50IGk7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvcihpPSgwKTtpPChuKTtpKyspewogICAgICByW2ldID0gMDsKICAgIH0KICAgIGZvcihpPSgwKTtpPChtKTtpKyspewogICAgICBjW2ldID0gMDsKICAgIH0KICAgIGZvcihpPSgwKTtpPChpbmQuc2l6ZSgpKTtpKyspewogICAgICByW2luZFtpXVswXV0rKzsKICAgIH0KICAgIGZvcihpPSgwKTtpPChpbmQuc2l6ZSgpKTtpKyspewogICAgICBjW2luZFtpXVsxXV0rKzsKICAgIH0KICAgIGZvcihpPSgwKTtpPChuKTtpKyspewogICAgICBpbnQgajsKICAgICAgZm9yKGo9KDApO2o8KG0pO2orKyl7CiAgICAgICAgcmVzICs9IChyW2ldICsgY1tqXSkgJSAyOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwogIH0KfQo7Ci8vIGNMYXkgdmFyc2lvbiAyMDE5MTEwOC0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGludCByWzUwXSwgY1s1MF07Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBpbnQgb2RkQ2VsbHMoaW50IG4sIGludCBtLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBpbmQpIHsKLy8gICAgIGludCByZXMgPSAwOwovLyAgICAgcmVwKGksbikgcltpXSA9IDA7Ci8vICAgICByZXAoaSxtKSBjW2ldID0gMDsKLy8gICAgIHJlcChpLGluZC5zaXplKCkpIHJbaW5kW2ldWzBdXSsrOwovLyAgICAgcmVwKGksaW5kLnNpemUoKSkgY1tpbmRbaV1bMV1dKys7Ci8vICAgICByZXAoaSxuKSByZXAoaixtKSByZXMgKz0gKHJbaV0gKyBjW2pdKSAlIDI7Ci8vICAgICByZXR1cm4gcmVzOwovLyAgIH0KLy8gfTsK