Advertisement
Malinovsky239

Zksh Round2 (F)

Jan 22nd, 2012
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. #define N 205
  8.  
  9. int dp[N][N];
  10.  
  11. int main() {
  12.     freopen("apples.in", "r", stdin);
  13.     freopen("apples.out", "w", stdout);
  14.  
  15.     int k;
  16.     string s;
  17.  
  18.     cin >> k >> s;
  19.     int l = s.size();
  20.  
  21.     for (int i = 0; i <= l; i++)
  22.         for (int j = 1; j <= l; j++)
  23.             dp[i][j] = -int(1e9);
  24.  
  25.     for (int t = 1; t <= k && t * 2 <= l; t++) {
  26.         dp[2 * t][t] = 0;
  27.         for (int i = 0; i < t; i++)
  28.             if (s[i] == '+')
  29.                 dp[2 * t][t]++;
  30.     }
  31.  
  32.     for (int i = 0; i < l; i++) {
  33.         for (int j = 1; j <= l; j++) {
  34.             if (j > 1) {
  35.                 int add = 0;
  36.                 for (int k = i; k < l && k < i + (j - 1); k++) {
  37.                     if (s[k] == '+')
  38.                         add++;                 
  39.                 }                  
  40.                 dp[i + 2 * (j - 1)][j - 1] = max(dp[i + 2 * (j - 1)][j - 1], dp[i][j] + add);
  41.             }
  42.  
  43.             int add = 0;
  44.             for (int k = i; k < l && k < i + (j + 1); k++) {
  45.                 if (s[k] == '+')
  46.                     add++;
  47.             }
  48.  
  49.             dp[i + 2 * (j + 1)][j + 1] = max(dp[i + 2 * (j + 1)][j + 1], dp[i][j] + add);
  50.         }          
  51.     }
  52.  
  53.     int res = -1;
  54.     for (int j = 1; j <= l; j++)
  55.     if (dp[l][j] > res) {
  56.         res = dp[l][j];    
  57.     }
  58.  
  59.     if (res >= 0)
  60.         cout << res << endl;
  61.     else
  62.         puts("No");
  63.  
  64.  
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement