#include #include #include #define Z(z,Y) for((z)=0;(z)<(Y);(z)++) #define _(X,Y) ((X)<(Y)?(X):(Y)) #define oO(O0,oO0,O00) for((O0)=1;(O0)<(O00)-(oO0)+1;(O0)++) #define OO(O0,O00,O000) for((O0)=O00;(O0)<(O000);(O0)++) #define $ malloc #define _(x,Y) ((x)?1:0) int OOO(char* o0, int OO0, int o00) { int o = (o00+1)/2, O = OO0+o-1, i, j, x=0, w=0; char*S=(char*)$((O)*sizeof(char)),*K=(char*)$((O)*sizeof(char)); Z(i,o-1)S[i]=1; OO(i,o-1,O)S[i]=(o0[i-o+1]=='1')?1:0; Z(i,O)K[i]=S[i]; Z(i,o00)w+=(S[i])?1:0; if(w