Submission #889810

#TimeUsernameProblemLanguageResultExecution timeMemory
889810MinbaevCouncil (JOI23_council)C++17
41 / 100
4051 ms19884 KiB
#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL); int n,m; cin>>n>>m; int arr[n+1][m+1]; vector<int>vis(m+1),mp((1<<m)),msk((1<<m)),ind(n+1); for(int i = 1;i<=n;i++){ int sum = 0; for(int j = 1;j<=m;j++){ cin>>arr[i][j]; if(arr[i][j]){ vis[j]+=1; sum += (1<<(j-1)); } } ind[i] = sum; mp[sum]++; } if(n<=3000){ for(int i = 1;i<=n;i++){ int mx = 0; vector<int>vis1(m+1); for(int j = 1;j<=m;j++){ if(arr[i][j]) vis1[j]++; } for(int j = 1;j<=n;j++){ if(j==i)continue; vector<int>vis2(m+1); int cnt = 0 ; for(int k = 1;k<=m;k++){ if(arr[j][k])vis2[k]++; } for(int k = 1;k<=m;k++){ if((vis[k]-vis1[k]-vis2[k])>((n-2)/2))cnt++; //cout<<vis[k]-vis1[k]-vis2[k]<<" "; } //cout<<"\n"; mx = max(mx,cnt); } cout<<mx<<"\n"; } } else{ int mn = ((n-2)/2); for(int i = 1;i<=n;i++){ int val = ind[i]; vector<int>vis1(m+1); for(int j = 1;j<=m;j++) if(arr[i][j]){ vis1[j]++; } mp[val]--; int mx = 0; for(int mask = 0;mask<(1<<m);mask++){ if(mp[mask]<=0||mx==m)continue; vector<int>vis2(m+1); int cnt = 0; for(int j = 0;j<m;j++) if(((mask>>j)&1)==1)vis2[j+1]++; for(int j = 1;j<=m;j++) if(vis[j]-vis1[j]-vis2[j]>mn)cnt++; mx = max(mx,cnt); if(mask==0)break; } cout<<mx<<"\n"; mp[val]++; } } }
#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...