Submission #889588

#TimeUsernameProblemLanguageResultExecution timeMemory
889588vjudge1Council (JOI23_council)C++17
41 / 100
4080 ms45080 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define ar array #define pb push_back #define ln '\n' #define int long long using i64 = long long; template <class F, class _S> bool chmin(F &u, const _S &v){ bool flag = false; if ( u > v ){ u = v; flag |= true; } return flag; } template <class F, class _S> bool chmax(F &u, const _S &v){ bool flag = false; if ( u < v ){ u = v; flag |= true; } return flag; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector <vector<int>> a(n, vector <int> (m)); for ( auto &u: a ){ for ( auto &v: u ) cin >> v; } vector <int> cnt(m); for ( int i = 0; i < n; i++ ){ for ( int j = 0; j < m; j++ ){ cnt[j] += a[i][j]; } } int tot = 0; for ( auto &x: cnt ){ tot += (x >= n / 2); } const int S = 1 << m; vector <ar<int,2>> us(S, {-1, -1}); for ( int i = 0; i < n; i++ ){ int b = 0; for ( int j = 0; j < m; j++ ){ b |= a[i][j] << j; } if ( us[b][0] != -1 ){ swap(us[b][0], us[b][1]); } us[b][0] = i; } if ( m <= 10 ){ for ( int i = 0; i < n; i++ ){ int mx = 0, q = tot; auto tmp = cnt; int b = 0; for ( int j = 0; j < m; j++ ){ if ( a[i][j] && tmp[j] == n / 2 ){ --q; } tmp[j] -= a[i][j]; if ( tmp[j] == n / 2 ){ b |= 1 << j; } } for ( int mask = 0; mask < (1 << m); mask++ ){ bool flag = false; for ( auto j: {0, 1} ){ if ( us[mask][j] != -1 && us[mask][j] != i ){ flag = true; } } chmax(mx, flag * (q - __builtin_popcount(mask & b))); } cout << mx << ln; } } else{ for ( int i = 0; i < n; i++ ){ int mx = 0, q = tot; auto tmp = cnt; for ( int j = 0; j < m; j++ ){ if ( a[i][j] && cnt[j] == n / 2 ){ --q; } cnt[j] -= a[i][j]; } for ( int j = 0; j < n; j++ ){ if ( j == i ) continue; int tq = q; for ( int k = 0; k < m; k++ ){ if ( a[j][k] && cnt[k] == n / 2 ){ --tq; } } chmax(mx, tq); } cout << mx << ln; swap(tmp, cnt); } } cout << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...