TopCoder SRM 342 Div1 Easy TagalogDictionary
問題
タガログ語のアルファベットは、順に
a b k d e g h i l m n ng o p r s t u w y
である。
与えられたタガログ語の文字列を、
タガログ語での辞書順でソートせよ。
ただし、ngは、必ずアルファベットngとして扱うものとする。
制約条件
文字列の個数≦50
各文字列の長さ≦50
ソースコード
const char *a="a b k d e g h i l m n ng o p r s t u w y"; map<string,int> m; bool cmp(string a,string b){ vi aa,bb; rep(i,a.size()){ if(a.substr(i,2)=="ng")aa.pb(m["ng"]), i++; else aa.pb(m[string(1,a[i])]); } rep(i,b.size()){ if(b.substr(i,2)=="ng")bb.pb(m["ng"]), i++; else bb.pb(m[string(1,b[i])]); } return aa<bb; } class TagalogDictionary { public: vector <string> sortWords(vector <string> words) { string s(a); stringstream ss(s); int k=0; while(ss>>s)m[s]=k++; sort(all(words),cmp); return words; } };