Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define NMAX 50005
- using namespace std;
- ifstream fin("nondecreasing.in");
- ofstream fout("nondecreasing.out");
- char s[NMAX];
- int c[NMAX], n, dp[27][NMAX];
- int Cost(int i, int j)
- {
- if(i==j)
- return 0;
- return i+j;
- }
- int main()
- {
- fin.getline(s+1, NMAX);
- n=strlen(s+1);
- for(int i=1; i<=n; i++)
- c[i]=s[i]-'a'+1;
- for(int i=1; i<=26; i++)
- dp[i][1]=Cost(i, c[1]);
- for(int i=1; i<=26; i++)
- for(int j=2; j<=n; j++)
- {
- int minim=INT_MAX;
- for(int k=1; k<=i; k++)
- minim=min(dp[k][j-1]+Cost(i,c[j]), minim);
- dp[i][j]=minim;
- }
- int sol=INT_MAX;
- for(int i=1; i<=26; i++)
- sol=min(dp[i][n], sol);
- fout<<sol;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment