Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <map>
- #include <set>
- #include <algorithm>
- #include <string>
- #include <cstring>
- #include <cctype>
- #include <utility>
- #include <cmath>
- using namespace std;
- int cnt=0;
- int n, K;
- string s[200];
- char t[100][20000];
- char vs[20000];
- int vlen=0;
- int len[201];
- int tl[201];
- void get (int i, int k, int sr, int res) {
- if (k > K) {
- cnt = max(cnt, res);
- return;
- }
- char ok = 'W';
- for (int f = len[i], g = vlen; f > 0 && g > 0; f--, g--)
- if (vs[g] != t[i][f]) {
- if (vs[g] == 'W')
- ok = 'B';
- else
- ok = 'W';
- break;
- }
- vlen++;
- vs[vlen] = ok;
- len[i]++;
- t[i][len[i]] = (ok == 'W' ? 'B' : 'W');
- int vl = vlen;
- for (int f = 0; f < n; f++)
- tl[f] = len[f];
- get ((i + 1) % n, k + 1, 1, res + (ok == 'W'));
- vlen = vl;
- for (int f = 0; f < n; f++)
- len[f] = tl[f];
- if (sr < 2)
- get (i, k + 1, 2, res + (ok == 'W'));
- }
- int main () {
- freopen ("checkers.in", "r", stdin);
- freopen ("checkers.out", "w", stdout);
- cin >> n >> K;
- for (int i = 0; i < n; i++) {
- cin >> s[i];
- len[i] = s[i].size();
- for (int j = 0; j < len[i]; j++)
- t[i][j + 1] = s[i][j];
- }
- get (0, 1, 1, 0);
- cout << cnt;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement