#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int pstrcmp(const void *aa, const void *bb)
{
char *const *a = aa;
char *const *b = bb;
}
void duplicates(const char *s, size_t len)
{
if (n > len) {
size_t nn = n - len;
const char **p
= malloc(nn
* sizeof(*p
)); size_t i;
for (i = 0; i < nn; i++) {
p[i] = s + i;
}
qsort(p
, nn
, sizeof(*p
), pstrcmp
);
i = 0;
while (i < nn) {
size_t j = i + 1;
while (j
< nn
&& memcmp(p
[i
], p
[j
], len
) == 0) j
++;
if (j > i + 1) {
printf("%.*s\n", (int) len
, p
[i
]); }
i = j;
}
}
}
int main(void)
{
const char *s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT";
duplicates(s, 10);
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50IHBzdHJjbXAoY29uc3Qgdm9pZCAqYWEsIGNvbnN0IHZvaWQgKmJiKQp7CiAgICBjaGFyICpjb25zdCAqYSA9IGFhOwogICAgY2hhciAqY29uc3QgKmIgPSBiYjsKICAgIAogICAgcmV0dXJuIHN0cmNtcCgqYSwgKmIpOwp9Cgp2b2lkIGR1cGxpY2F0ZXMoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikKewogICAgc2l6ZV90IG4gPSBzdHJsZW4ocyk7CiAgICAKICAgIGlmIChuID4gbGVuKSB7CiAgICAgICAgc2l6ZV90IG5uID0gbiAtIGxlbjsKICAgICAgICBjb25zdCBjaGFyICoqcCA9IG1hbGxvYyhubiAqIHNpemVvZigqcCkpOwogICAgICAgIHNpemVfdCBpOwogICAgICAgIAogICAgICAgIGZvciAoaSA9IDA7IGkgPCBubjsgaSsrKSB7CiAgICAgICAgICAgIHBbaV0gPSBzICsgaTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcXNvcnQocCwgbm4sIHNpemVvZigqcCksIHBzdHJjbXApOwogICAgICAgIAogICAgICAgIGkgPSAwOwogICAgICAgIHdoaWxlIChpIDwgbm4pIHsKICAgICAgICAgICAgc2l6ZV90IGogPSBpICsgMTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHdoaWxlIChqIDwgbm4gJiYgbWVtY21wKHBbaV0sIHBbal0sIGxlbikgPT0gMCkgaisrOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGogPiBpICsgMSkgewogICAgICAgICAgICAgICAgcHJpbnRmKCIlLipzXG4iLCAoaW50KSBsZW4sIHBbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpID0gajsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnJlZShwKTsKICAgIH0KfQoKaW50IG1haW4odm9pZCkKewogICAgY29uc3QgY2hhciAqcyA9ICJBQUFBQUNDQ0NDQUFBQUFDQ0NDQ0NBQUFBQUdHR1RUVCI7CiAgICAKICAgIGR1cGxpY2F0ZXMocywgMTApOwogICAgCiAgICByZXR1cm4gMDsKfQo=