a53

nondecreasing

a53
Feb 7th, 2021
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define NMAX 50005
  3. using namespace std;
  4. ifstream fin("nondecreasing.in");
  5. ofstream fout("nondecreasing.out");
  6. char s[NMAX];
  7. int c[NMAX], n, dp[27][NMAX];
  8. int Cost(int i, int j)
  9. {
  10. if(i==j)
  11. return 0;
  12. return i+j;
  13. }
  14. int main()
  15. {
  16. fin.getline(s+1, NMAX);
  17. n=strlen(s+1);
  18. for(int i=1; i<=n; i++)
  19. c[i]=s[i]-'a'+1;
  20. for(int i=1; i<=26; i++)
  21. dp[i][1]=Cost(i, c[1]);
  22. for(int i=1; i<=26; i++)
  23. for(int j=2; j<=n; j++)
  24. {
  25. int minim=INT_MAX;
  26. for(int k=1; k<=i; k++)
  27. minim=min(dp[k][j-1]+Cost(i,c[j]), minim);
  28. dp[i][j]=minim;
  29.  
  30. }
  31. int sol=INT_MAX;
  32. for(int i=1; i<=26; i++)
  33. sol=min(dp[i][n], sol);
  34. fout<<sol;
  35. return 0;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment