81 lines
1.8 KiB
C
81 lines
1.8 KiB
C
|
|
#include <stdio.h>
|
||
|
|
#include <stdlib.h>
|
||
|
|
#include <string.h>
|
||
|
|
|
||
|
|
#define CHARS_MAX 64
|
||
|
|
#define MAX_LEVELS 16
|
||
|
|
#define abs(a) ((a) < 0 ? (-(a)) : (a))
|
||
|
|
|
||
|
|
int is_safe(int *levels, int level_count);
|
||
|
|
|
||
|
|
int main() {
|
||
|
|
char *p, *buf, c;
|
||
|
|
|
||
|
|
buf = calloc(CHARS_MAX, sizeof(char));
|
||
|
|
p = buf;
|
||
|
|
int safes1 = 0, safes2 = 0;
|
||
|
|
|
||
|
|
int levels[MAX_LEVELS], level_count = 0;
|
||
|
|
while ((c = getchar()) != EOF) {
|
||
|
|
*p++ = c;
|
||
|
|
if (c != '\n') {
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
p = buf;
|
||
|
|
int level = 0;
|
||
|
|
|
||
|
|
p--;
|
||
|
|
do {
|
||
|
|
p++;
|
||
|
|
sscanf(p, "%i", &levels[level_count]);
|
||
|
|
level_count++;
|
||
|
|
while (*p != ' ' && *p != '\n') p++;
|
||
|
|
} while(*p != '\n');
|
||
|
|
|
||
|
|
if (is_safe(levels, level_count)) {
|
||
|
|
safes1++;
|
||
|
|
}
|
||
|
|
|
||
|
|
int new_levels[MAX_LEVELS];
|
||
|
|
for (int i = 0; i < level_count; i++) {
|
||
|
|
memcpy(new_levels, levels, level_count * sizeof(levels[0]));
|
||
|
|
for (int j = i; j < level_count - 1; j++) {
|
||
|
|
new_levels[j] = levels[j+1];
|
||
|
|
}
|
||
|
|
|
||
|
|
if (is_safe(new_levels, level_count - 1)) {
|
||
|
|
safes2++;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
memset(buf, 0, CHARS_MAX);
|
||
|
|
p = buf;
|
||
|
|
level_count = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
free(buf);
|
||
|
|
|
||
|
|
printf("%i\n", safes1);
|
||
|
|
printf("%i\n", safes2);
|
||
|
|
}
|
||
|
|
|
||
|
|
int is_safe(int *levels, int level_count) {
|
||
|
|
int diff = 0, safe = 1;
|
||
|
|
for (int i = 0; i < level_count; i++) {
|
||
|
|
if (i != 0) {
|
||
|
|
if (abs(levels[i] - levels[i-1]) < 1 || abs(levels[i] - levels[i-1]) > 3) {
|
||
|
|
safe = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ((levels[i] - levels[i-1]) * diff < 0) {
|
||
|
|
safe = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
diff = levels[i] - levels[i-1];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return safe;
|
||
|
|
}
|