PKU2636

id:RiSKさんの所で出たPKU2636について適当にやってみた。
以下ネタばれ注意


まず、素直に書いてみる

int main(){
	int n,i,m,j,v,k;
	scanf("%d",&n);
	for(i=0;i<n;++i){ 
		scanf("%d",&m);
		v=1;
		for(int j=0;j<m;++j){
			scanf("%d",&k);
			v+=k-1;
		}
		printf("%d\n",v);
	}
}

上のは問題文通り基本に忠実に解いています。
しかし、scanfが三箇所にある等の無駄が目立ちます。
というわけで、その無駄を省きましょう。

k;
main(i,n){
	for(gets(n);~scanf("%d",&n);
			k||printf("%d\n",1-i))
		i=!k--?k=n:i-n;
}

えーと原型無くなっているような気もしますけど基本は同じです。
最初の一回のscanfは綺麗に消せなかったのでgetsでお茶を濁しました。