fork download
  1. // Author: _Sherbiny
  2.  
  3. #include "bits/stdc++.h"
  4.  
  5. #ifdef DBG
  6.  
  7. #include "./debug.h"
  8.  
  9. #else
  10. #define dbg(...)
  11. #endif
  12. using namespace std;
  13. typedef long long ll;
  14. #define endl '\n'
  15. #define int ll
  16. ///////////////////////////////////
  17. const int N = 4e5 + 20;
  18. int n;
  19. string s;
  20.  
  21. int dp[N][26];
  22.  
  23. int go(int i, int p) {
  24. if(i >= n && p == '#' - 'a') return 0;
  25. if(i >= n) return -1e9;
  26.  
  27. int &res = dp[i][p];
  28. if(~res) return res;
  29. res = go(i + 1, p);
  30. if(s[i] - 'a' == p)
  31. res = max(res, 1 + go(i + 2, s[i + 1] - 'a'));
  32.  
  33. return res;
  34. }
  35.  
  36. void build(int i, int p, int prev) {
  37. if(i >= n) return;
  38.  
  39. int res = go(i, p);
  40. if(go(i + 1, p) == res) return build(i + 1, p, prev);
  41. cout << i - prev + 1 << ' ';
  42. build(i + 2, s[i + 1] - 'a', i + 1);
  43. }
  44.  
  45. void magic() {
  46. cin >> n >> s;
  47. s.push_back('#');
  48.  
  49. memset(dp, -1, sizeof dp);
  50. int res = go(1, s[0] - 'a');
  51.  
  52. if(res <= 0) {
  53. cout << -1 << endl;
  54. return;
  55. }
  56.  
  57. cout << res << endl;
  58. build(1, s[0] - 'a', 0);
  59. }
  60.  
  61. signed main() {
  62. ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  63. int t = 1;
  64. while (t--) magic();
  65. }
Success #stdin #stdout 0.02s 84952KB
stdin
Standard input is empty
stdout
-1