Submission #916750

#TimeUsernameProblemLanguageResultExecution timeMemory
916750yellowtoadPalindromic Partitions (CEOI17_palindromic)C++17
100 / 100
215 ms28224 KiB
#include <iostream>
#include <vector>
using namespace std;

const long long mod = (1LL<<41)-1;
long long test, a[1000010], st, ed, r, lst, pos, sum, ans;
string s, t;
vector<string> v;

int main() {
	cin >> test;
	a[0] = 1;
	for (int i = 1; i <= 1e6; i++) a[i] = (a[i-1]*26)%mod;
	while (test--) {
		cin >> s;
		st = ed = sum = ans = pos = 0;
		r = lst = s.length()-1;
		v.clear();
		t = "";
		for (int i = 0; i < s.length(); i++) {
			if (i >= r) {
				pos = i;
				break;
			}
			st = (st*26+s[i]-'A')%mod;
			(ed += (a[lst-r]*(s[r]-'A'))) %= mod;
			t += s[i];
			if (st == ed) {
				v.push_back(t);
				sum += t.length();
				t = "";
				lst = r-1;
				st = ed = 0;
			}
			r--;
		}
		for (int i = 0; i < v.size(); i++) ans++;
		if (sum*2 != s.length()) ans++;
		for (int i = v.size()-1; i >= 0; i--) ans++;
		cout << ans << endl;
	}
}

Compilation message (stderr)

palindromic.cpp: In function 'int main()':
palindromic.cpp:20:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |   for (int i = 0; i < s.length(); i++) {
      |                   ~~^~~~~~~~~~~~
palindromic.cpp:37:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |   for (int i = 0; i < v.size(); i++) ans++;
      |                   ~~^~~~~~~~~~
palindromic.cpp:38:13: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |   if (sum*2 != s.length()) ans++;
      |       ~~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...