さてと前回のコードには少し無駄があるので削りましょう。
二箇所削って124Bです。

z,x,k;p(n){
scanf(" (%d",&x)?k=2,p(n-=x),p(n):--k|n||++z;scanf(" )");}
main(){for(;~scanf("%d",&x);z=puts(z?"yes":"no"))p(x);}

末端の条件は数字が来た後2連でnilが来たときという定義にしています。
こういう変な定義にしたのは通常の方法だとreturn x;と書くと9byteも使ってしまうからです。

ちなみに典型的に普通のやつだと以下のようになるでしょう。

x;p(n){x=
scanf(" (%d",&x)?n-=x,p(n)+p(n)&~1:!n;scanf(" )");return x;}
main(){for(;~scanf("%d",&x);puts(p(x)>1?"yes":"no"));}

これで123byte 。
......ってアレー? こっちのほうが短いじゃん。