prestige

Untitled

Jan 5th, 2014
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. const int INF = 1e+9;
  4. const int NMAX = 1e+5;
  5. using namespace std;
  6.  
  7. int k, n;
  8. char s[NMAX];
  9. int dp[26][NMAX];
  10. int curr_maxx[NMAX];
  11. int last[26];
  12. int main () {
  13. freopen ("input.txt", "r", stdin);
  14. freopen ("output.txt", "w", stdout);
  15. scanf("%d%d", &n, &k);
  16. scanf("%s", s);
  17. dp[s[0] - 'A'][0] = 0;
  18. for (int j = 0; j < 26; j++) last[j] = INF;
  19. last[s[0] - 'A'] = 0;
  20. for (int i = 1; i < n; i++) {
  21. int minn = INF;
  22. for (int j = 0; j < 26; j++) {
  23. dp[i][j] = INF;
  24. if (i - last[j] > k || last[j] == INF)
  25. continue;
  26. dp[i][j] = curr_maxx[last[j]] + (j != int(s[i] - 'A'));
  27. minn = min(dp[i][j], minn);
  28. }
  29. curr_maxx[i] = minn;
  30. last[s[i] - 'A'] = i;
  31. }
  32. printf("%d", curr_maxx[n - 1]);
  33. return 0;
  34. }
  35. /*
  36. 10 2
  37. ABABBCACBC
  38. */
Advertisement
Add Comment
Please, Sign In to add comment