PKU2291

id:odz:20080110を見て全力で挑戦。
ソースコードの変化の流れをついでに書いたので超長くなった。

ただ、\r\nを\nにすれば全て後1B縮まる。めんどいからやらんけど。

最初は入力をひとつずつやる方式で133Bまで到達
s[m];あたりが運を天に任せてます。

#import<algo.h>
main(){
	int n,i,m,s[m];
	for(cin>>n;cin>>n;cout<<m<<endl){
		for(i=n;m=i--;)
			cin>>s[i];
		for(sort(s,s+n);n;)
			m>?=s[++i]*n--;
	}
}

その後処理を纏めるために入力をまとめてやる方式に変更。
ここでs[m]を使うには入力がでかくなり過ぎで諦める。
変わりにs[-1]にデータを格納するという嫌がらせ。

#import<algo.h>
int*k,s['~~'],m,n;
main(){
	while(cin>>s[~n--]);
	for(k=s;m=n=*k++;cout<<m<<endl)
		for(sort(k,k+n);n;)
			m>?=*k++*n--;
}

さらに2重ループの融合。
sortがすごい回数呼ばれるけど気にしない。

#import<algo.h>
int s['~~'],*k=s,m,n;
main(){
	while(cin>>s[~m--]);
	while(n?m>?=*k++*n--:(m>0&&cout<<m<<endl,m=n=*k++))
		sort(k,k+n);
}

さらにループ融合。
3ループの融合は頭が痛いです。

#import<algo.h>
int s['~~'],*k=s,m,n;
main(){
	while(cin>>s[~m]?--m:n?m>?=*k++*n--:(m>0&&cout<<m<<endl,m=n=*k++))
		sort(k,k+n);
}

もはや、なにを書いてるか分からん。
ここまで複雑化すると無駄が多い気がするけどこの辺で気力が尽きてきてやめる。