#if 0 嘘解法 #endif // includes {{{ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include // #include // #include // #include // }}} using namespace std; using ll = long long; int main() { std::ios::sync_with_stdio(false), std::cin.tie(0); int h, w; cin >> h >> w; vector v(h); int cnt[2] = {}; for(auto &e: v) { cin >> e; for(auto &e2 : e) e2 -= '0', cnt[e2]++; } int ans = 1; // 偏っているほど NO が出やすい乱択 !w mt19937 mt(chrono::steady_clock::now().time_since_epoch().count()); auto rd = bind(uniform_real_distribution(), mt); double p = double(min(cnt[0], cnt[1])) / (cnt[0] + cnt[1]); p *= 2; if(p < 0.5) p = p * p; else p = 1 - (1 - p) * (1 - p); cerr << p << endl; ans = rd(mt) < p; cout << (ans ? "YES" : "NO") << endl; return 0; }