#include <stdio.h>
int *find(int *begin, int *end, int value)
{
int *p = begin;
for ( ; p != end; ++p)
if (*p == value) break;
return p;
}
#define no_items 10
int main(void) {
int i, j, k;
int parent1[no_items] = {8,3,6,9,7,4,5,10,1,2};
int parent2[no_items] = {10,3,2,9,4,7,5,8,6,1};
int output1[no_items] = {0};
int output2[no_items] = {0};
int crosspoint = 3;
memcpy(output1
, parent1
, crosspoint
* sizeof(int)); for (i = crosspoint, j = 0; i < no_items; ++i)
{
while (find(output1, output1+i, parent2[j]) != output1+i) ++j;
output1[i] = parent2[j];
}
memcpy(output2
, parent2
, crosspoint
* sizeof(int)); for (i = crosspoint, j = 0; i < no_items; ++i)
{
while (find(output2, output2+i, parent1[j]) != output2+i) ++j;
output2[i] = parent1[j];
}
memcpy(parent1
, output1
, sizeof(parent1
)); memcpy(parent2
, output2
, sizeof(parent2
)); for (i = 0; i < no_items; ++i) {
}
for (i = 0; i < no_items; ++i) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCAqZmluZChpbnQgKmJlZ2luLCBpbnQgKmVuZCwgaW50IHZhbHVlKQp7CiAgICBpbnQgKnAgPSBiZWdpbjsKICAgIGZvciAoIDsgcCAhPSBlbmQ7ICsrcCkKICAgICAgICBpZiAoKnAgPT0gdmFsdWUpIGJyZWFrOwogICAgcmV0dXJuIHA7Cn0KI2RlZmluZSBub19pdGVtcyAxMAppbnQgbWFpbih2b2lkKSB7CmludCBpLCBqLCBrOwppbnQgcGFyZW50MVtub19pdGVtc10gPSB7OCwzLDYsOSw3LDQsNSwxMCwxLDJ9OwppbnQgcGFyZW50Mltub19pdGVtc10gPSB7MTAsMywyLDksNCw3LDUsOCw2LDF9OwppbnQgb3V0cHV0MVtub19pdGVtc10gPSB7MH07CmludCBvdXRwdXQyW25vX2l0ZW1zXSA9IHswfTsKaW50IGNyb3NzcG9pbnQgPSAzOwptZW1jcHkob3V0cHV0MSwgcGFyZW50MSwgY3Jvc3Nwb2ludCAqIHNpemVvZihpbnQpKTsKZm9yIChpID0gY3Jvc3Nwb2ludCwgaiA9IDA7IGkgPCBub19pdGVtczsgKytpKQp7CiAgICB3aGlsZSAoZmluZChvdXRwdXQxLCBvdXRwdXQxK2ksIHBhcmVudDJbal0pICE9IG91dHB1dDEraSkgKytqOwogICAgb3V0cHV0MVtpXSA9IHBhcmVudDJbal07Cn0KbWVtY3B5KG91dHB1dDIsIHBhcmVudDIsIGNyb3NzcG9pbnQgKiBzaXplb2YoaW50KSk7CmZvciAoaSA9IGNyb3NzcG9pbnQsIGogPSAwOyBpIDwgbm9faXRlbXM7ICsraSkKewogICAgd2hpbGUgKGZpbmQob3V0cHV0Miwgb3V0cHV0MitpLCBwYXJlbnQxW2pdKSAhPSBvdXRwdXQyK2kpICsrajsKICAgIG91dHB1dDJbaV0gPSBwYXJlbnQxW2pdOwp9Cm1lbWNweShwYXJlbnQxLCBvdXRwdXQxLCBzaXplb2YocGFyZW50MSkpOwptZW1jcHkocGFyZW50Miwgb3V0cHV0Miwgc2l6ZW9mKHBhcmVudDIpKTsKCXByaW50ZigicGFyZW50MToiKTsKCWZvciAoaSA9IDA7IGkgPCBub19pdGVtczsgKytpKSB7CgkgICAgcHJpbnRmKCIlZCwgIiwgcGFyZW50MVtpXSk7Cgl9CglwcmludGYoIlxucGFyZW50MjoiKTsKCWZvciAoaSA9IDA7IGkgPCBub19pdGVtczsgKytpKSB7CgkgICAgcHJpbnRmKCIlZCwgIiwgcGFyZW50MltpXSk7Cgl9CglwdXRjaGFyKCdcbicpOwoKCXJldHVybiAwOwp9Cg==
parent1:8, 3, 6, 10, 2, 9, 4, 7, 5, 1,
parent2:10, 3, 2, 8, 6, 9, 7, 4, 5, 1,