>>359
(3)が微妙に曖昧だったんで修正した
-for(pb=b;pa!=pb && pa!=(pb-1);pb++,pa--){*pa=*pa^*pb;*pb=*pa^*pb;*pa=*pa^*pb;}
+for(pb=a;pa!=pb && pa!=(pb-1);pb++,pa--){*pa=*pa^*pb;*pb=*pa^*pb;*pa=*pa^*pb;}
+for(pa=a,pb=b;*pa!=0;pa++,pb++) *pb=pa;
あとは適当に分割すればいい