Submission #545818

#TimeUsernameProblemLanguageResultExecution timeMemory
545818Ai7081Palindromic Partitions (CEOI17_palindromic)C++17
0 / 100
4 ms2260 KiB
#include <bits/stdc++.h> using namespace std; const int mod = 1e9+7; const int key = 31; int t, out, l, r, now, po[500005]; string s; stack<char> st; bool ok; int main() { ios_base::sync_with_stdio(false); cin.tie(0); po[0] = 1; for (int i=1; i<=500000; i++) po[i] = (po[i-1] * key) % mod; cin >> t; while (t--) { cin >> s; ok = false; out = l = r = now = 0; for (int i=0; i<s.size()/2; i++) { l *= key, l += (s[i]-'a'+1), l %= mod; r += (s[s.size()-1-i]-'a'+1)*po[now], r %= mod; if (i == s.size()/2-1 && l == r) ok = true; if (l == r) now = l = r = 0, out += 2; else now++; } (s.size()%2 || !ok) ? cout << out+1 << endl : cout << out << endl; } return 0; }

Compilation message (stderr)

palindromic.cpp: In function 'int main()':
palindromic.cpp:21:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |         for (int i=0; i<s.size()/2; i++) {
      |                       ~^~~~~~~~~~~
palindromic.cpp:24:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |             if (i == s.size()/2-1 && l == r) ok = true;
      |                 ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...