Codeforces 131 A. cAPS lOCK

問題

  • 全てが大文字である
  • 最初の一文字が小文字であり、その他の文字が大文字である

与えられた単語が、上のいずれかの条件を満たすとき、
単語のキャピタルを全て逆にして出力せよ。
満たさないときは、単語をそのまま出力せよ。

制約条件

単語は100字以下

方針

befungeでも解けるかもしれない。
100字までってのが面倒かな?

ソースコード

void run()
{
	string in; cin>>in;
	bool lower=0,ok=islower(in[0]);
	rep(i,in.size())if(islower(in[i]))lower=1;
	for(int i=1;i<in.size();i++)ok&=isupper(in[i]);
	
	if(!lower||ok)rep(i,in.size())in[i]=islower(in[i])?toupper(in[i]):tolower(in[i]);
	cout<<in<<endl;
}