Submission #1176674

#TimeUsernameProblemLanguageResultExecution timeMemory
1176674MongHwaCouncil (JOI23_council)C++20
41 / 100
4091 ms2452 KiB
#pragma GCC optimize ("Ofast") #pragma GCC optimize ("unroll-loops") #include <iostream> using namespace std; int vote[300005][25]; int cnt[25]; int arr[300005], val[1<<20], calc[1<<20]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; if(n <= 3000) { for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) { cin >> vote[i][j]; cnt[j] += vote[i][j]; } for(int i = 0; i < n; i++) { int ans = 0; for(int j = 0; j < m; j++) cnt[j] -= vote[i][j]; for(int j = 0; j < n; j++) { if(i == j) continue; int cur = 0; for(int k = 0; k < m; k++) { cnt[k] -= vote[j][k]; if(cnt[k] >= n/2) cur++; } ans = max(ans, cur); for(int k = 0; k < m; k++) cnt[k] += vote[j][k]; } cout << ans << '\n'; for(int j = 0; j < m; j++) cnt[j] += vote[i][j]; } } else if(m <= 14) { for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { int x; cin >> x; if(x == 1) { arr[i] |= (1<<j); cnt[j]++; } } val[arr[i]]++; } for(int i = 0; i < (1<<m); i++) { if(val[i] == 0) continue; val[i]--; for(int j = 0; j < (1<<m); j++) { int cur = 0; if(val[j] == 0) continue; for(int k = 0; k < m; k++) if(cnt[k]-((i & (1<<k)) > 0)-((j & (1<<k))> 0) >= n/2) cur++; calc[i] = max(calc[i], cur); } val[i]++; } for(int i = 0; i < n; i++) cout << calc[arr[i]] << '\n'; } else return 0; }
#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...