#include <bits/stdc++.h>
using namespace std;
int N, K;
long long int memo[510][510];
long long int pre[510][510];
int in[1100];
int bin[1100];
string s;
long long int inf = 1.1e18;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> N >> K;
cin >> s;
int a = 1;
int b = 1;
for(int i = 0; i < N * 2; i++){
if(s[i] == 'A'){
in[i] = a;
bin[a] = b;
a++;
}
else{
in[i] = b;
b++;
}
}
for(int i = 1; i <= N; i++){
pre[i][i - 1] = 0;
for(int j = i; j <= N; j++){
pre[i][j] = pre[i][j - 1] + max(0,bin[j] - j + 1);
}
}
for(int i = 0; i <= N; i++){
for(int j = 0; j <= K; j++){
memo[i][j] = inf;
}
}
for(int i = 0; i <= K; i++){
memo[0][i] = 0;
}
for(int i = 1; i <= N; i++){
for(int j = 1; j <= K; j++){
for(int k = i; k >= 1; k--){
memo[i][j] = min(memo[i][j], memo[k - 1][j - 1] + pre[k][i]);
}
}
}
for(int i = 1; i <= N; i++){
}
printf("%lld",memo[N][K]);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |