#include <stdio.h>
#include <stdlib.h>
int in_array(int val,int* x,int x_size) {
int i=0;
while( i<x_size ) {
if( *(x+i)==val ) return 1;
++i;
}
return 0;
}
int main() {
int x[] = {1,2,3,4,5,6,7,8,9,10};
int A[] = {3,4,5,6};
int B[] = {5,6,7,8};
int *tmp
= (int *)malloc(sizeof(x
)); if(tmp){
int size=0,i=0;
for(i=0;i<sizeof(x)/sizeof(x[0]);++i) {
if( in_array(x[i],A,sizeof(A)/sizeof(A[0])) ||
in_array(x[i],B,sizeof(B)/sizeof(B[0])) ){
++size;
*(tmp+i)=i;
}else{
*(tmp+i)=-1;
}
}
int *array
= (int *)malloc(size
*sizeof(int)); if( array ){
int *pos=array;
for(i=0;i<sizeof(x)/sizeof(x[0]);++i) {
if( 0<=*(tmp+i) ){
*pos=x[*(tmp+i)];
pos++;
}
}
for(i
=0;i
<size
;++i
) printf("%d ", *(array
+i
)); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBpbl9hcnJheShpbnQgdmFsLGludCogeCxpbnQgeF9zaXplKSB7CiAgaW50IGk9MDsKICB3aGlsZSggaTx4X3NpemUgKSB7CiAgICBpZiggKih4K2kpPT12YWwgKSByZXR1cm4gMTsKICAgICsraTsKICB9CiAgcmV0dXJuIDA7Cn0KCmludCBtYWluKCkgewogIGludCB4W10gPSB7MSwyLDMsNCw1LDYsNyw4LDksMTB9OwogIGludCBBW10gPSB7Myw0LDUsNn07CiAgaW50IEJbXSA9IHs1LDYsNyw4fTsKCiAgaW50ICp0bXAgPSAoaW50ICopbWFsbG9jKHNpemVvZih4KSk7CiAgaWYodG1wKXsKICAgIGludCBzaXplPTAsaT0wOwogICAgZm9yKGk9MDtpPHNpemVvZih4KS9zaXplb2YoeFswXSk7KytpKSB7CiAgICAgIGlmKCBpbl9hcnJheSh4W2ldLEEsc2l6ZW9mKEEpL3NpemVvZihBWzBdKSkgfHwKICAgICAgICAgIGluX2FycmF5KHhbaV0sQixzaXplb2YoQikvc2l6ZW9mKEJbMF0pKSApewogICAgICAgICsrc2l6ZTsKICAgICAgICAqKHRtcCtpKT1pOwogICAgICB9ZWxzZXsKICAgICAgICAqKHRtcCtpKT0tMTsKICAgICAgfQogICAgfQoKICAgIGludCAqYXJyYXkgPSAoaW50ICopbWFsbG9jKHNpemUqc2l6ZW9mKGludCkpOwogICAgaWYoIGFycmF5ICl7CiAgICAgIGludCAqcG9zPWFycmF5OwogICAgICBmb3IoaT0wO2k8c2l6ZW9mKHgpL3NpemVvZih4WzBdKTsrK2kpIHsKICAgICAgICBpZiggMDw9Kih0bXAraSkgKXsKICAgICAgICAgICpwb3M9eFsqKHRtcCtpKV07CiAgICAgICAgICBwb3MrKzsKICAgICAgICB9CiAgICAgIH0KICAgICAgcHJpbnRmKCJbICIpOwogICAgICBmb3IoaT0wO2k8c2l6ZTsrK2kpIHByaW50ZigiJWQgIiwgKihhcnJheStpKSk7CiAgICAgIHByaW50ZigiXVxuIik7CiAgICAgIGZyZWUoYXJyYXkpOwogICAgfQogICAgZnJlZSh0bXApOwogIH0KICByZXR1cm4gMDsKfQoK