夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

YadexOpen

無理。あれ。

英文難しいか制約厳しいかどっちかだったし・・・

A

TLEした。
計算量減らせない(泣)

int main() {
	string str; cin >> str;
	string tmp=str;
	sort(str.begin(), str.end());
	char s = str[0];
	int c = 1;
	for (int i=1; i<str.length(); i++) {
		if (s==str[i]&&c%2==1) {
			str.erase(i-1,2);
			i-=2;
			c++;
		} else if (s==str[i]) {
			c++;
		} else if (s!=str[i]) {
			s=str[i];
			c=1;
		}
	}
	string ans="";
	for (int i=0; i<tmp.length(); i++) {
		for (int j=0; j<str.length(); j++) {
			if (tmp[i]==str[j]) {
				ans+=tmp[i];
				str.erase(j,1);
			}
		}
	}
	cout << ans << endl;
	return 0;
}

B

WA。
むり。

int main() {
	string str; getline(cin, str);
	int dot=0;
	for (int i=0; i<str.length(); i++) {
		if (str[i]==',') {
			str.insert(i+1, " ");
		} else if (str[i]==' '&&i-1>=0&&str[i-1]==' ') {
			str.erase(i, 1);
		} else if (dot!=3&&str[i]=='.') {
			dot++;
		} else if (dot==3&&str[i]=='.') {
			str.insert(i, " ");
			dot=0;
		}
		cout << str[i] << endl;
	}
	cout << str << endl;
}

E

問題の意味はわかりやすい・・・けど解法が思いつかなかった。

結果

921位タイ