PKU 1589 Unix ls
http://poj.org/problem?id=1589
入力された文字列を出来るだけ少ない行で、アルファベット順に並んだように出力するというような問題。
面倒くさいかと思っていましたが、案外そうでもないように感じました。
配列の範囲チェックを==で行なって1RE頂きました。
main(){ int n; while(cin>>n){ vector<string> app(n); int sz=0; rep(i,n){ cin>>app[i]; sz=max(sz,SZ(app[i])); } sort(ALL(app)); cout<<string(60,'-')<<endl; for(int c=60;;--c){ if(sz+(sz+2)*(c-1)<=60){ int r=(SZ(app)+c-1)/c; rep(i,r){ rep(j,c){ if(j*r+i>=SZ(app))break; if(j)cout<<" "; cout<<app[j*r+i]<<string(sz-SZ(app[j*r+i]),' '); } cout<<endl; } break; } } } }