Submission #1162927

#TimeUsernameProblemLanguageResultExecution timeMemory
1162927pemguimnCouncil (JOI23_council)C++20
6 / 100
32 ms2120 KiB
#include <bits/stdc++.h> using namespace std; const int N = 3e5 + 5, M = 20, INF = 1e9 + 7; int n, m, a[N], voted[M]; int dp[2][N]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; int mask = 1 << m, cutoff = n / 2; vector<int> dp(mask, INF); int z = 0, o = 0, t = 0; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ int x; cin >> x; a[i] |= (x << j); voted[j] += x; } } int cnt = 0; for(int j = 0; j < m; j++){ if(voted[j] > cutoff + 1) t |= (1 << j); else if(voted[j] == cutoff + 1) o |= (1 << j); else if(voted[j] == cutoff) z |= (1 << j); if(voted[j] >= cutoff) cnt++; } for(int i = 0; i < n; i++){ a[i] = (a[i] & ((mask - 1) ^ t)); dp[a[i]] = 0; } for(int i = 0; i < m; i++){ for(int j = 0; j < mask; j++){ if(j & (1 << i)){ dp[j] = min(dp[j], dp[j ^ (1 << i)]); } } } for(int i = 0; i < m; i++){ for(int j = 0; j < mask; j++){ if(j & (1 << i)){ dp[j ^ (1 << i)] = min(dp[j ^ (1 << i)], dp[j] + 1); } } } for(int i = 0; i < n; i++){ int qq = (mask - 1) ^ ((z ^ (a[i] & z)) | (o & a[i])); cout << cnt - dp[qq] - __builtin_popcount(z & a[i]) << '\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...