Hatena::Grouptopcoder

kojingharangの日記 RSSフィード

 | 

2012-01-15

SMR 529 Div2 medium KingSort

11:24 |  SMR 529 Div2 medium KingSort - kojingharangの日記 を含むブックマーク はてなブックマーク -  SMR 529 Div2 medium KingSort - kojingharangの日記  SMR 529 Div2 medium KingSort - kojingharangの日記 のブックマークコメント

王の名前とN世が文字列で与えられるので、王の名前とローマ数字の昇順にソートして返す問題。

ローマ数字→intのルーチンで一桁目が 0 の場合に何も返してなくて failed system test. ぬるい。

手元のコンパイルのとき -Wall くらい付けたほうがいいな。

(あとで通したもの)

class KingSort {
	public:
	int ord(string s) {
		//The Roman numerals for 1 through 10 are I, II, III, IV, V, VI, VII, VIII, IX, and X.
		//The Roman numerals for 20, 30, 40, and 50 are XX, XXX, XL, and L.
		if(s.substr(0,1)=="L") return 50+ord(s.substr(1));
		if(s.substr(0,2)=="XL") return 40+ord(s.substr(2));
		if(s.substr(0,3)=="XXX") return 30+ord(s.substr(3));
		if(s.substr(0,2)=="XX") return 20+ord(s.substr(2));
		if(s.substr(0,1)=="X") return 10+ord(s.substr(1));
		if(s.substr(0,2)=="IX") return 9;
		if(s.substr(0,4)=="VIII") return 8;
		if(s.substr(0,3)=="VII") return 7;
		if(s.substr(0,2)=="VI") return 6;
		if(s.substr(0,1)=="V") return 5;
		if(s.substr(0,2)=="IV") return 4;
		if(s.substr(0,3)=="III") return 3;
		if(s.substr(0,2)=="II") return 2;
		if(s.substr(0,1)=="I") return 1;
		return 0;  // <- これ!
	}
	vector <string> getSortedList(vector <string> kings) {
		vector<pair<pair<string, int>, string> > w;
		REP(i, kings.size()) {
			stringstream ss(kings[i]);
			string name, o;
			ss>>name>>o;
			w.push_back(make_pair(make_pair(name, ord(o)), kings[i]));
		}
		sort(ALL(w));
		vector<string> ans(w.size());
		REP(i, w.size()) ans[i]=w[i].second;
		return ans;
	}
 |