比赛 4043级NOIP2022欢乐赛3rd 评测结果 WWWWWWWTTT
题目名称 回文串回文 最终得分 0
用户昵称 该账号已注销 运行时间 3.000 s
代码语言 C++ 内存使用 1.88 MiB
提交时间 2022-11-04 20:20:19
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;

int cnt[27] = {0}, ans = 0;
char md;
string s;

int main() {
	freopen("strts.in", "r", stdin);
	freopen("strts.out", "w", stdout);
	cin >> s;
	int sl = s.length();
	for (int i = 0; i < sl; i++) {
		cnt[s[i] - 'a' + 1]++;
	}
	if (sl % 2 == 0) {
		for (int i = 1; i <= 26; i++) {
			if (cnt[i] % 2 == 1) {
				md = i - 1 + 'a';
				break;
			}
		}
		for (int i = 0; i < sl; i++) {
			if (s[i] == md) {
				if (i == sl / 2 + 1)
					break;
				ans += abs(sl / 2 - i + 1);
				if (i > sl / 2 + 1) {
					for (int j = i; j > sl / 2 + 1; j--) {
						swap(s[j], s[j - 1]);
					}
				}
			}
		}
	}
	for (int i = 0; i <= sl / 2; i++) {
		for (int j = sl - 1 - i; j >= sl / 2; j--) {
			bool x = 0;
			if (s[j] == s[i]) {
				x = 1;
				for (int k = j; k < sl - 1 - i; k++) {
					ans++;
					swap(s[k], s[k + 1]);
				}
			}
			if (x == 1)
				break;
		}
	}
	cout << ans << endl;
	return 0;
}