50185. Hitting set, part I

難度:2/5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
#include "set.h"

// typedef struct set{
// uint64_t ppl;
// int cnt;
// int max_el;
// }Set;

void initializeSet(Set* set, int numberOfElement){
set->ppl = 0;
set->cnt = 0;
set->max_el = numberOfElement;
}

bool intersect(Set set1, Set set2){
return ((set1.ppl & set2.ppl) != 0);
}

void addElement(Set* set, int element){
element--;
(set->ppl) |= ((uint64_t)1 << element);
set->cnt++;
}

void removeElement(Set* set, int element){
element--;
(set->ppl) &= (~((uint64_t)1 << element));
set->cnt--;
}

void printSet(Set set){
int n = 0;
for(int i = 0; i < set.max_el; i++){
if((set.ppl >> i) & 1 == 1){
printf("%d%c", i + 1, (n == set.cnt - 1) ? '\n' : ' ');
n++;
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>

typedef struct set{
uint64_t ppl;
int cnt;
int max_el;
}Set;

void initializeSet(Set* set, int numberOfElement);
bool intersect(Set set1, Set set2);
void addElement(Set* set, int element);
void removeElement(Set* set, int element);
void printSet(Set set);


50185. Hitting set, part I
https://aaronlin1229.github.io/judgegirl_50185/
Author
Akizumi
Posted on
July 17, 2023
Licensed under