fork download
  1. #include<stdio.h>
  2. int D[121212][21][3];
  3. int trans[256];
  4. int max(int a, int b) { if (a < b)return b; return a; }
  5. int main() {
  6. trans['H'] = 0, trans['P'] = 1, trans['S'] = 2;
  7. int n, k;
  8. int i,j,p;
  9. scanf("%d%d", &n, &k);
  10. for (i = 1; i <= n; i++) {
  11. char x;
  12. scanf(" %c", &x);
  13. for (j = 0; j <= k; j++) {
  14. for (p = 0; p < 3; p++) {
  15. D[i][j][p] = D[i - 1][j][p];
  16. if (j > 0)D[i][j][p] = max(D[i][j][p],max(max(D[i - 1][j - 1][0], D[i - 1][j - 1][1]), D[i - 1][j - 1][2]));
  17. if (p == trans[x])
  18. D[i][j][p]++;
  19. }
  20. }
  21. }
  22. printf("%d", max(max(D[n][k][0], D[n][k][1]), D[n][k][2]));
  23. return 0;
  24. }
Time limit exceeded #stdin #stdout 5s 12160KB
stdin
Standard input is empty
stdout
Standard output is empty