#include <stdio.h>
// scan sorted array a and b, put intersection in c.
void set_intersection( int *a, int asize, int *b, int bsize, int *c, int *csize) {
int i = 0, j = 0, k = 0;
while ( i < asize && j < bsize ) {
if ( a[i] == b[j] ) {
c[k] = a[i];
++k;
++i;
++j;
}
else if ( a[i] < b[i] )
++i;
else
++j;
}
*csize = k;
}
int main(void) {
int a[] = {1,3,4,5,7,8,9,12};
int b[] = {2,3,5,6,7,10,11,12};
int c[10];
int size = 0;
set_intersection(a, 8, b, 8, c, &size);
int i;
for ( i = 0; i < size; ++i ) {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBzY2FuIHNvcnRlZCBhcnJheSBhIGFuZCBiLCBwdXQgaW50ZXJzZWN0aW9uIGluIGMuCnZvaWQgc2V0X2ludGVyc2VjdGlvbiggaW50ICphLCBpbnQgYXNpemUsIGludCAqYiwgaW50IGJzaXplLCBpbnQgKmMsIGludCAqY3NpemUpIHsKCWludCBpID0gMCwgaiA9IDAsIGsgPSAwOwoJCgl3aGlsZSAoIGkgPCBhc2l6ZSAgJiYgIGogPCBic2l6ZSApIHsKCQlpZiAoIGFbaV0gPT0gYltqXSApIHsKCQkJY1trXSA9IGFbaV07CgkJCSsrazsKCQkJKytpOwoJCQkrK2o7CgkJfQoJCWVsc2UgaWYgKCBhW2ldIDwgYltpXSApIAoJCQkrK2k7CgkJZWxzZQoJCQkrK2o7Cgl9CgkqY3NpemUgPSBrOwp9CgppbnQgbWFpbih2b2lkKSB7CglpbnQgYVtdID0gezEsMyw0LDUsNyw4LDksMTJ9OwoJaW50IGJbXSA9IHsyLDMsNSw2LDcsMTAsMTEsMTJ9OwoJaW50IGNbMTBdOwoJaW50IHNpemUgPSAwOwoJCglzZXRfaW50ZXJzZWN0aW9uKGEsIDgsIGIsIDgsIGMsICZzaXplKTsKCQoJaW50IGk7Cglmb3IgKCBpID0gMDsgaSA8IHNpemU7ICsraSApIHsKCQlwcmludGYoIiVkICIsY1tpXSk7Cgl9CglyZXR1cm4gMDsKfQoK