立命館合宿2012 day3 問題A Chicken or the Egg (AOJ 2362)

問題文

日本語なので本文参照(http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2362


と思ったら日本語のような言語で書かれていて問題が理解不能だった。

制約条件

入力はeggおよびchickenが並んだ長さ1000以下の文字列

方針

どうやら、
同一の単語が複数回あらわれるところで単語を区切る

eggchickenegg
egg
eggchicken
chickeneggchicken

のようになるので、
単語数最大のグループのうち、一番最初にのグループにおける、
最後の単語を見る、ということをすればいいらしい。

ソースコード

string in;

int main(){
	cin>>in;
	vi v,tmp;
	rep(i,in.size()){
		if(in[i]=='e')v.pb(0), i+=2;
		else v.pb(1), i+=6;
	}
	vector<vi> vv;
	rep(i,v.size()){
		if(tmp.size()&&tmp.back()==v[i]){
			vv.pb(tmp);
			tmp.clear();
		}
		tmp.pb(v[i]);
	}
	vv.pb(tmp);
	int mx=0, mxi;
	rep(i,vv.size())if((int)vv[i].size()>mx)mx=vv[i].size(),mxi=i;
	if(!vv[mxi].back())cout<<"egg"<<endl;
	else cout<<"chicken"<<endl;
	
	return 0;
	
}