比赛 20160414 评测结果 AAEEEEEEEE
题目名称 随机数消除器 最终得分 20
用户昵称 KZNS 运行时间 0.680 s
代码语言 C++ 内存使用 39.94 MiB
提交时间 2016-04-14 17:16:32
显示代码纯文本
//KZNS
#include <fstream>
#include <cstring>
using namespace std;
//
ifstream fin ("randomb.in");
ofstream fout ("randomb.out");
//
char S[8000004];
int len;
int ed = 0;
bool exj[16777216] = {0};
bool exo[16777216] = {0};
//
int main() {
	fin >> S;
	len = strlen(S);
	int j, k, t;
	exj[1] = true;
	exo[1] = true;
	for (int i = 0; i < len; i++) {
		j = i;
		k = i;
		t = 1;
		while (true) {
			if (!exj[t]) {
				exj[t] = true;
				ed++;
			}
			if (j < 0 || k >= len)
				break;
			if (S[j] == S[k]) {
				if (S[j] == 'a') {
					j--;
					k++;
					t<<=1;
				}
				else {
					j--;
					k++;
					t = t<<1^1;
				}
			}
			else {
				break;
			}
		}
	}
	for (int i = 1; i < len; i++) {
		j = i-1;
		k = i;
		t = 1;
		while (true) {
			if (!exo[t]) {
				exo[t] = true;
				ed++;
			}
			if (j < 0 || k >= len)
				break;
			if (S[j] == S[k]) {
				if (S[j] == 'a') {
					j--;
					k++;
					t<<=1;
				}
				else {
					j--;
					k++;
					t = t<<1^1;
				}
			}
			else {
				break;
			}
		}
	}
	fout << ed;
	return 0;
}
//UBWH