Codeforces 420 Coder-Strike 2014 - Finals (online edition, Div. 1) A. Start Up

Div1のコンテストで8位だった。
けどレート130くらいしか上がらなかった…

問題

英大文字からなる入力が与えられる。
この文字を左右に反転させても同じかどうかを判定せよ。
文字列を左右反転とは、各アルファベットを鏡像反転させて、逆順に読むことを言う。

制約条件

長さ≦10^5

方針

鏡像反転させられる文字はAHIMOTUVWXY.
入力も大きくないので愚直にチェックすればよい

ソースコード

int main(){
	const char *s = "AHIMOTUVWXY";
	bool ok[256] = {};
	bool ans = 1;
	rep(i, strlen(s)) ok[s[i]] = 1;
	
	string in;
	cin >> in;
	
	rep(i, in.size()) if(!ok[in[i]] || in[i] != in[in.size() - 1 - i]) ans = 0;
	cout << (ans ? "YES" : "NO") << endl;
	
	return 0;
}