83 lines
2.2 KiB
C
83 lines
2.2 KiB
C
#include "_.h"
|
|
|
|
int strslen(char **strs) {
|
|
int count = 0;
|
|
for (int i = 0; strs[i] != NULL; i++)
|
|
count++;
|
|
return count;
|
|
}
|
|
|
|
int is_first(char ***inputs_1_split, int verif, int verif_2, int j, int k) {
|
|
|
|
for (int i = 0; inputs_1_split[i] != NULL; i++) {
|
|
int number_left = atoi(inputs_1_split[i][0]);
|
|
int number_right = atoi(inputs_1_split[i][1]);
|
|
|
|
if (number_left != verif && number_right != verif)
|
|
continue;
|
|
if (number_left != verif_2 && number_right != verif_2)
|
|
continue;
|
|
|
|
if (j > k) {
|
|
if (number_left == verif)
|
|
continue;
|
|
else
|
|
return 0;
|
|
}
|
|
else {
|
|
if (number_right == verif)
|
|
continue;
|
|
else
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
void swap(char **str_1, char **str_2) {
|
|
char *tmp = *str_1;
|
|
*str_1 = *str_2;
|
|
*str_2 = tmp;
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
if (argc != 3)
|
|
return 1;
|
|
|
|
char **inputs_1 = str_split(strdup(argv[1]), '\n');
|
|
char ***inputs_1_split = calloc(strslen(inputs_1) + 1, sizeof(char**));
|
|
for (int i = 0; inputs_1[i] != NULL; i++)
|
|
inputs_1_split[i] = str_split(inputs_1[i], '|');
|
|
char **inputs_2 = str_split(strdup(argv[2]), '\n');
|
|
|
|
int count = 0;
|
|
for (int i = 0; inputs_2[i] != NULL; i++) {
|
|
char **inputs_2_comma = str_split(inputs_2[i], ',');
|
|
int is_good = 1;
|
|
int is_good_final = 1;
|
|
for (int j = 0; inputs_2_comma[j] != NULL; j++) {
|
|
int verif = atoi(inputs_2_comma[j]);
|
|
for (int k = 0; inputs_2_comma[k] != NULL; k++) {
|
|
int verif_2 = atoi(inputs_2_comma[k]);
|
|
if (k != j)
|
|
is_good = is_first(inputs_1_split, verif_2, verif, j, k);
|
|
is_good_final = is_good == 0 ? 0 : is_good_final;
|
|
if (!is_good) {
|
|
swap(&inputs_2_comma[j], &inputs_2_comma[k]);
|
|
j = 0;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (!is_good_final) {
|
|
count += atoi(inputs_2_comma[strslen(inputs_2_comma) / 2]);
|
|
}
|
|
}
|
|
|
|
printf("count: %d\n", count);
|
|
|
|
return 0;
|
|
}
|