Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <iostream>
- #include <string>
- using namespace std;
- #define N 205
- int dp[N][N];
- int main() {
- freopen("apples.in", "r", stdin);
- freopen("apples.out", "w", stdout);
- int k;
- string s;
- cin >> k >> s;
- int l = s.size();
- for (int i = 0; i <= l; i++)
- for (int j = 1; j <= l; j++)
- dp[i][j] = -int(1e9);
- for (int t = 1; t <= k && t * 2 <= l; t++) {
- dp[2 * t][t] = 0;
- for (int i = 0; i < t; i++)
- if (s[i] == '+')
- dp[2 * t][t]++;
- }
- for (int i = 0; i < l; i++) {
- for (int j = 1; j <= l; j++) {
- if (j > 1) {
- int add = 0;
- for (int k = i; k < l && k < i + (j - 1); k++) {
- if (s[k] == '+')
- add++;
- }
- dp[i + 2 * (j - 1)][j - 1] = max(dp[i + 2 * (j - 1)][j - 1], dp[i][j] + add);
- }
- int add = 0;
- for (int k = i; k < l && k < i + (j + 1); k++) {
- if (s[k] == '+')
- add++;
- }
- dp[i + 2 * (j + 1)][j + 1] = max(dp[i + 2 * (j + 1)][j + 1], dp[i][j] + add);
- }
- }
- int res = -1;
- for (int j = 1; j <= l; j++)
- if (dp[l][j] > res) {
- res = dp[l][j];
- }
- if (res >= 0)
- cout << res << endl;
- else
- puts("No");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement