2009-05-18
SRM353 Div1 Easy: Glossary
以前に見たことがある気がする(おそらくSRM前の準備運動がてら開いてみた)
- stringをlowercaseするのに悩むなんてヘタレすぎる
- 答えが合わないとおもったらスペースのパディングの数が1つ足りないとか
- 30分ぐらいかかってしまった
- passed system test
string lowercase(const string &str){
int n=sz(str);
char s[20];
rep(i,n) s[i]=tolower(str[i]);
s[n] = 0;
return s;
}
class Glossary {
public:
vector <string> buildGlossary(vector <string> items) {
int n=sz(items);
vector<vector<string> > a_m(2);
rep(i,26){
int side=i/13;
bool f=false;
vector<pair<string,string> > is;
rep(j,n){
int cap=items[j][0]; if (cap>='a') cap-=32;
if(cap=='A'+i) { f=true; is.pb(make_pair(lowercase(items[j]),items[j])); }
}
if (f) {
sort(all(is));
char buf[20];
buf[0]= 'A'+i; for(int k=1;k<19;k++) buf[k]=' '; buf[19]=0;
a_m[side].pb(buf);
a_m[side].pb("-------------------");
tr(is,it) {
sprintf(buf," %-17s",it->second.c_str());
a_m[side].pb(buf);
}
}
}
vector<string> ans;
int al=sz(a_m[0]), nl=sz(a_m[1]);
for(int i=0;i<al;i++){
if(i<nl){
ans.pb(a_m[0][i] + " " + a_m[1][i]);
} else {
ans.pb(a_m[0][i] + " ");
}
}
for(int i=al;i<nl;i++){
ans.pb(" "+a_m[1][i]);
}
return ans;
}
};
コメント
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20090518