PKU 2803 Defining Moment
http://poj.org/problem?id=2803
入力された単語のprefix,suffixを変換するだけの問題。
なんとか楽しそうな感じがしたけれど、打ち込んでいる内にめんどくさく感じてきた問題。
もう少しスマートに書いてもよかったような気がしました。
main(){ int n; cin>>n; while(n--){ string bef,aft,in; cin>>in; int sz=SZ(in); if(sz>3 && in.substr(0,4)=="anti"){ in=in.substr(4); bef+="against "; }else if(sz>3 && in.substr(0,4)=="post"){ in=in.substr(4); bef+="after "; }else if(sz>2 && in.substr(0,3)=="pre"){ in=in.substr(3); bef+="before "; }else if(sz>1 && in.substr(0,2)=="re"){ aft+=" again"; in=in.substr(2); }else if(sz>1 && in.substr(0,2)=="un"){ bef+="not "; in=in.substr(2); } sz=SZ(in); if(sz-2>=0 && in.substr(sz-2)=="er"){ in=in.substr(0,sz-2)+"s"; bef+="one who "; }else if(sz-3>=0 && in.substr(sz-3)=="ing"){ in=in.substr(0,sz-3); bef+="to actively "; }else if(sz-3>=0 && in.substr(sz-3)=="ize"){ in=in.substr(0,sz-3); bef+="change into "; }else if(sz-1>=0 && in.substr(sz-1)=="s"){ in=in.substr(0,sz-1); bef+="multiple instances of "; }else if(sz-4>=0 && in.substr(sz-4)=="tion"){ in=in.substr(0,sz-4)+"ing"; bef+="the process of "; } cout<<bef<<in<<aft<<endl; } }