Skip to content

Commit c4543c1

Browse files
committed
LMIO
1 parent 492a9e5 commit c4543c1

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

LMIO/LMiO 17-faktai.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
LMiO 2017 Faktai
3+
- Bitmask stuff
4+
*/
5+
6+
#include <bits/stdc++.h>
7+
using namespace std;
8+
9+
bitset<200> bs[20];
10+
11+
int main() {
12+
int n, m;
13+
scanf("%d %d", &n, &m);
14+
for (int i = 0; i < n; i++) {
15+
int k;
16+
scanf("%d", &k);
17+
for (int j = 0; j < k; j++) {
18+
int f;
19+
scanf("%d", &f);
20+
bs[f - 1][i] = 1;
21+
}
22+
}
23+
24+
int lb = n, ub = 0;
25+
for (int mask = 0; mask < (1 << m); mask++) {
26+
bitset<200> cov;
27+
bool good = true;
28+
for (int i = 0; i < m; i++) if (mask & (1 << i)) {
29+
if ((cov & bs[i]).count()) {
30+
good = false;
31+
break;
32+
}
33+
cov |= bs[i];
34+
}
35+
if (good && cov.count() == n) {
36+
lb = min(lb, __builtin_popcount(mask));
37+
ub = max(ub, __builtin_popcount(mask));
38+
}
39+
}
40+
printf("%d %d", lb, ub);
41+
return 0;
42+
}

0 commit comments

Comments
 (0)