#include #include #include #include int spitze(const bool t[], int size) { for (int i = 0; i < size; i += 1) { if (t[0] ^ t[i]) { return i + 1; } } return size; } bool nul(const bool t[], int size) { while (size > 0 && !t[size - 1]) { size -= 1; } int count = 0; for (int i = 0; i < size; i += 1) { count += t[i]; if (count <= i / 2) { return false; } } return true; } double modfloat(double a, double b) { int q = (int)(a / b); return a - (double)(b * q); } void minmax(const int t[], int size, int *min, int *max) { if (size) { *min = t[0]; *max = t[0]; } for (int i = 1; i < size; i += 1) { if (t[i] < *min) { *min = t[i]; } else if (t[i] > *max) { *max = t[i]; } } } int medianemax(const int t[], int size) { if (!size) { return 0; } bool forward = true; int min = 0; int max = size - 1; while (min < max) { if (forward) { min += 1; if (t[min] >= t[max]) { forward = false; } } else { max -= 1; if (t[max] >= t[min]) { forward = true; } } } return min; } void derive(double t[], int size) { for (int i = 1; i < size; i += 1) { t[i - 1] = i * t[i]; } t[size - 1] = 0; }