takapt0226's diary

競技プログラミングのことを書きます

POJ 3617 Best Cow Line

解法

greedy
前1文字しか見ないgreedyでは、BCABのようなケースで、BBACと出力してしまう可能性がある(正しくはBABC)
出力形式にも注意。80文字ごとに改行を入れる必要がある。

ソースコード

int main()
{
    int n;
    string s;
    scanf("%d", &n);
    rep(i, n)
    {
	char c;
	scanf(" %c", &c);
	s += c;
    }

    string res;
    rep(i, n)
    {
	string rev = s;
	reverse(all(rev));
	if (s < rev)
	{
	    res += s[0];
	    s.erase(0, 1);
	}
	else
	{
	    res += s[s.size() - 1];
	    s.erase(s.size() - 1);
	}
    }

    while (!res.empty())
    {
	printf("%s\n", res.substr(0, 80).c_str());
	res.erase(0, 80);
    }
}