Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int r, c, a[6][12]{};
- map<pair<int, int>, int> m;
- bool is_valid(int i, int j)
- {
- return i >= 1 and i <= r and j >= 1 and j <= c;
- }
- int stage(int i, int j)
- {
- int ans = -OO;
- if (!is_valid(i, j))
- return 0;
- else if (a[i][j] == 1)
- return 0;
- else if (m[{i, j}])
- return m[{i, j}];
- else
- {
- for (int k = 1; k <= c; k++)
- {
- if (k != j)
- {
- ans = max(ans, stage(i + 1, k));
- }
- }
- m[{i, j}] = ans;
- return 1 + ans;
- }
- }
- void solve()
- {
- int num_of_blocks, Maxx = -OO;
- cin >> r >> c;
- for (int i = 1; i <= r and cin >> num_of_blocks; i++)
- {
- int holder = 0;
- while (num_of_blocks--)
- {
- cin >> holder;
- a[i][holder] = 1;
- }
- }
- for (int j = 1; j <= c; j++)
- Maxx = max(Maxx, stage(1, j));
- cout << Maxx << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment