#include <stdio.h>
void swap( int* a, int* b )
{
int temp = *a;
*a = *b;
*b = temp;
}
void sortTwoColor( int* a, int len )
{
int i, j;
i = 0;
j = 1;
while(i < len && j < len)
{
if(a[i] && !a[j])
{
a[i] = 0;
a[j] = 1;
i += 2;
j += 2;
}
if(!a[i])
i += 2;
if(a[j])
j += 2;
}
int t = i;
while(i < len)
{
if(!a[i])
{
a[t] = 0;
a[i] = 1;
t += 2;
}
i += 2;
}
t = j;
while(j < len)
{
if(a[j])
{
a[t] = 1;
a[j] = 0;
t += 2;
}
j += 2;
}
for( i = 0; i < len; ++i )
}
int main()
{
int arr[] = {0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0};//{ 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1 };
int size = sizeof( arr ) / sizeof( *arr );
sortTwoColor( arr, size );
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHN3YXAoIGludCogYSwgaW50KiBiICkKewoJaW50IHRlbXAgPSAqYTsKCSphID0gKmI7CgkqYiA9IHRlbXA7Cn0KCnZvaWQgc29ydFR3b0NvbG9yKCBpbnQqIGEsIGludCBsZW4gKQp7CglpbnQgaSwgajsKCglpID0gMDsgICAgICAgICAKICAgICAJaiA9IDE7ICAgCiAgICAgICAKICAgICB3aGlsZShpIDwgbGVuICYmIGogPCBsZW4pIAogICAgIHsgICAgICAgICAgICAgICAgIAogICAgICAgICAgaWYoYVtpXSAmJiAhYVtqXSkKICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgYVtpXSA9IDA7CiAgICAgICAgICAgICAgYVtqXSA9IDE7CiAgICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgIGogKz0gMjsKICAgICAgICAgICB9IAogICAgICAgICAgIAogICAgICAgICAgIGlmKCFhW2ldKSAKICAgICAgICAgICAgICBpICs9IDI7ICAKCiAgICAgICAgICAgaWYoYVtqXSkKICAgICAgICAgICAgICBqICs9IDI7CiAgICAgIH0gIAogCiAgICAgIGludCB0ID0gaTsKICAgICAgd2hpbGUoaSA8IGxlbikKICAgICAgewogICAgICAgICAgaWYoIWFbaV0pCiAgICAgICAgICB7CiAgICAgICAgICAgICAgYVt0XSA9IDA7CiAgICAgICAgICAgICAgYVtpXSA9IDE7IAogICAgICAgICAgICAgIHQgKz0gMjsKICAgICAgICAgIH0KICAgICAgICAgIGkgKz0gMjsgCiAgICAgIH0gCgogICAgICB0ID0gajsgCiAgICAgIHdoaWxlKGogPCBsZW4pCiAgICAgIHsgICAgIAogICAgICAgICAgaWYoYVtqXSkgCiAgICAgICAgICB7CiAgICAgICAgICAgICAgYVt0XSA9IDE7IAogICAgICAgICAgICAgIGFbal0gPSAwOyAKICAgICAgICAgICAgICB0ICs9IDI7CiAgICAgICAgICB9IAogICAgICAgICAgaiArPSAyOwogICAgICAgfSAKCWZvciggaSA9IDA7IGkgPCBsZW47ICsraSApCgkJcHJpbnRmKCAiJWQgIiwgYVtpXSApOwp9CgppbnQgbWFpbigpCnsKCWludCBhcnJbXSA9IHswLDAsMCwwLDEsMSwxLDEsMSwxLDEsMSwwLDAsMCwwfTsvL3sgMCwgMSwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMSwgMSwgMCwgMCwgMSwgMCwgMSwgMSB9OwoJaW50IHNpemUgPSBzaXplb2YoIGFyciApIC8gc2l6ZW9mKCAqYXJyICk7CgoJc29ydFR3b0NvbG9yKCBhcnIsIHNpemUgKTsKCglyZXR1cm4gMDsKfQ==