Advertisement
welleyth

1559. Elective System

Dec 26th, 2020
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. /********************
  2. * Problem: -.
  3. * Theme: Ukrainian 3 stage 2017 - 1
  4. */
  5. #include <bits/stdc++.h>
  6.  
  7. using namespace std;
  8.  
  9. #define int long long
  10. #define mp make_pair
  11. #define pb push_back
  12. #define ALL(A) A.begin(),A.end()
  13. #define RALL(A) A.rbegin(),A.rend()
  14. #define FOR(i,a,b) for(int i=(a);i<(b);i++)
  15. #define RFOR(i,a,b) for(int i=(a);i>=(b);i--)
  16. #define SZ(A) A.size()
  17. #define f first
  18. #define s second
  19.  
  20. typedef vector<int> VI;
  21. typedef vector<pair<int,int> > VII;
  22. typedef pair<int,int> pii;
  23. typedef pair<int,pair<int,int> > pip;
  24. typedef pair<pair<int,int>,pair<int,int> > ppp;
  25. typedef pair<pair<int,int>,int> ppi;
  26.  
  27. const long double PI = acos(-1);
  28. const int INF = (int)1e18;
  29. const int MOD = (int)1e9+7;
  30. const int N = 100001;
  31.  
  32. int d,k;
  33.  
  34. void solve_case()
  35. {
  36.     string s;
  37.     cin >> s;
  38.  
  39.     int n = s.size();
  40.  
  41.     int dp[k+1][n+1];
  42.     for(int i=0;i<n;i++)
  43.         dp[0][i] = 0;
  44.  
  45.     vector<int> preff(n+1,0);
  46.  
  47.     preff[0] = 0;
  48.  
  49.     for(int i=1;i<=n;i++)
  50.         preff[i] = preff[i-1] + s[i-1] - 'a' + 1;
  51.  
  52.     if(d * k >= n)
  53.     {
  54.         cout << preff[n] << "\n";
  55.         return;
  56.     }
  57.  
  58. //    cerr << "WOW";
  59.  
  60.     for(int j=1;j<=k;j++)
  61.     {
  62.         for(int i=0;i<=n;i++)
  63.         {
  64.             if(i < d)
  65.                 dp[j][i] = dp[j-1][i];
  66.             else
  67.                 dp[j][i] = max(dp[j-1][i-d] + preff[i] - preff[i-d], dp[j][i-1]);
  68.         }
  69.     }
  70.  
  71.     cout << dp[k][n] << '\n';
  72.  
  73.     return;
  74. }
  75.  
  76. signed main()
  77. {
  78. //    ios::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr);
  79. //    freopen("input.txt","r",stdin);
  80. //    freopen("output.txt","w",stdout);
  81.  
  82.     int t = 1;
  83. //    cin >> t;
  84.  
  85.     while(cin >> d >> k)
  86.     {
  87.         solve_case();
  88.     }
  89.  
  90.     return 0;
  91. }
  92.  
  93. /*
  94.  
  95. t*(t+1)/2 == n
  96.  
  97. t^2 + t - n == 0
  98.  
  99. D=1+4*n
  100.  
  101. x1 = (sqrt(D)+1)/2
  102.  
  103. 0 1 1 2 1 2 2 3 1  2  2  3  2  3  3  4
  104.  
  105. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  106.  
  107. 0 1 2 3 4 5 6 7 8  9 10 11 12 13 14 15
  108. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement