Submission #877776

#TimeUsernameProblemLanguageResultExecution timeMemory
877776LucaIlieCouncil (JOI23_council)C++17
41 / 100
4049 ms11636 KiB
#include <bits/stdc++.h> using namespace std; const int MAX_N = 3e5; const int MAX_M = 20; struct aa { int x, y; void operator += ( const aa &a ) { if ( x == -1 ) { x = a.x; y = a.y; } else if ( y == -1 ) y = a.x; } }; aa countVc[1 << MAX_M]; int vote[MAX_N], pro[MAX_M]; int main() { int n, m; cin >> n >> m; for ( int mask = 0; mask < (1 << m); mask++ ) countVc[mask] = { -1, -1 }; for ( int i = 0; i < n; i++ ) { for ( int b = 0; b < m; b++ ) { int x; cin >> x; vote[i] += (x << b); pro[b] += x; } countVc[vote[i]] += { i, -1 }; } for ( int b = 0; b < m; b++ ) { for ( int mask = 0; mask < (1 << m); mask++ ) { if ( (mask >> b) & 1 ) countVc[mask] += countVc[mask - (1 << b)]; } } for ( int i = 0; i < n; i++ ) { vector<int> bits; int ap = 0; for ( int b = 0; b < m; b++ ) { int x = pro[b] - ((vote[i] >> b) & 1); if ( x > n / 2 ) ap++; if ( x == n / 2 ) bits.push_back( b ); } int maxAp = ap; for ( int mask = 0; mask < (1 << bits.size()); mask++ ) { int vc = (1 << m) - 1; for ( int b = 0; b < bits.size(); b++ ) { if ( (mask >> b) & 1 ) vc -= (1 << bits[b]); } if ( countVc[vc].x != -1 && (countVc[vc].x != i || (countVc[vc].y != -1 && countVc[vc].y != i)) ) maxAp = max( maxAp, ap + __builtin_popcount( mask ) ); } cout << maxAp << "\n"; } return 0; }

Compilation message (stderr)

council.cpp: In function 'int main()':
council.cpp:60:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |             for ( int b = 0; b < bits.size(); b++ ) {
      |                              ~~^~~~~~~~~~~~~
#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...