#include <stdlib.h>
#include <stdio.h>
struct vec {int *data, cap, size;};
struct vec vec_alloc(int cap) {
struct vec v = {0, 0, 0};
if (0 < cap
) v.
data = malloc(cap
* sizeof (int)), v.
cap = cap
; return v;
}
void vec_free
(struct vec v
) {free(v.
data);} void vec_push(struct vec *v, int value) {
if (!v) return;
void *new_data;
if (v->cap == v->size) {
new_data
= realloc(v
->data
, v
->cap
* 2 * sizeof (int)); if (!new_data) return;
v->data = new_data;
v->cap *= 2;
}
v->data[v->size++] = value;
}
struct vec p(struct vec v) {
int i;
for (i = 0; i < v.size; i++) {
}
return v;
}
int collatz(int n) {
return n % 2 ? n * 3 + 1 : n / 2;
}
struct vec chain(int n) {
struct vec v = vec_alloc(8);
do vec_push(&v, n), n = collatz(n); while (1 < v.data[v.size - 1]);
return v;
}
void f(int n) {
vec_free(p(chain(n)));
}
int f884(int a, int b, int c) {
int i, count = 0;
for (i = a; i <= b; i++) {
struct vec v = chain(i);
if (c <= v.size) count++;
vec_free(v);
}
return count;
}
int main() {
f(10), f(30);
printf("%d\n", f884
(1, 100, 15)); return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4Kc3RydWN0IHZlYyB7aW50ICpkYXRhLCBjYXAsIHNpemU7fTsKc3RydWN0IHZlYyB2ZWNfYWxsb2MoaW50IGNhcCkgewogIHN0cnVjdCB2ZWMgdiA9IHswLCAwLCAwfTsKICBpZiAoMCA8IGNhcCkgdi5kYXRhID0gbWFsbG9jKGNhcCAqIHNpemVvZiAoaW50KSksIHYuY2FwID0gY2FwOwogIHJldHVybiB2Owp9CnZvaWQgdmVjX2ZyZWUoc3RydWN0IHZlYyB2KSB7ZnJlZSh2LmRhdGEpO30Kdm9pZCB2ZWNfcHVzaChzdHJ1Y3QgdmVjICp2LCBpbnQgdmFsdWUpIHsKICBpZiAoIXYpIHJldHVybjsKICB2b2lkICpuZXdfZGF0YTsKICBpZiAodi0+Y2FwID09IHYtPnNpemUpIHsKICAgIG5ld19kYXRhID0gcmVhbGxvYyh2LT5kYXRhLCB2LT5jYXAgKiAyICogc2l6ZW9mIChpbnQpKTsKICAgIGlmICghbmV3X2RhdGEpIHJldHVybjsKICAgIHYtPmRhdGEgPSBuZXdfZGF0YTsKICAgIHYtPmNhcCAqPSAyOwogIH0KICB2LT5kYXRhW3YtPnNpemUrK10gPSB2YWx1ZTsKfQpzdHJ1Y3QgdmVjIHAoc3RydWN0IHZlYyB2KSB7CiAgaW50IGk7CiAgcHV0Y2hhcignWycpOwogIGZvciAoaSA9IDA7IGkgPCB2LnNpemU7IGkrKykgewogICAgaWYgKDAgPCBpKSBwcmludGYoIiwgIik7CiAgICBwcmludGYoIiVkIiwgdi5kYXRhW2ldKTsKICB9CiAgcHV0cygiXSIpOwogIHJldHVybiB2Owp9CgppbnQgY29sbGF0eihpbnQgbikgewogIHJldHVybiBuICUgMiA/IG4gKiAzICsgMSA6IG4gLyAyOwp9CnN0cnVjdCB2ZWMgY2hhaW4oaW50IG4pIHsKICBzdHJ1Y3QgdmVjIHYgPSB2ZWNfYWxsb2MoOCk7CiAgZG8gdmVjX3B1c2goJnYsIG4pLCBuID0gY29sbGF0eihuKTsgd2hpbGUgKDEgPCB2LmRhdGFbdi5zaXplIC0gMV0pOwogIHJldHVybiB2Owp9CnZvaWQgZihpbnQgbikgewogIHZlY19mcmVlKHAoY2hhaW4obikpKTsKfQppbnQgZjg4NChpbnQgYSwgaW50IGIsIGludCBjKSB7CiAgaW50IGksIGNvdW50ID0gMDsKICBmb3IgKGkgPSBhOyBpIDw9IGI7IGkrKykgewogICAgc3RydWN0IHZlYyB2ID0gY2hhaW4oaSk7CiAgICBpZiAoYyA8PSB2LnNpemUpIGNvdW50Kys7CiAgICB2ZWNfZnJlZSh2KTsKICB9CiAgcmV0dXJuIGNvdW50Owp9CmludCBtYWluKCkgewogIGYoMTApLCBmKDMwKTsKICBwcmludGYoIiVkXG4iLCBmODg0KDEsIDEwMCwgMTUpKTsKICByZXR1cm4gMDsKfQo=
[10, 5, 16, 8, 4, 2, 1]
[30, 15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
71