IMohammedNasr

Untitled

Mar 30th, 2022
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. int r, c, a[6][12]{};
  2. map<pair<int, int>, int> m;
  3.  
  4. bool is_valid(int i, int j)
  5. {
  6. return i >= 1 and i <= r and j >= 1 and j <= c;
  7. }
  8.  
  9. int stage(int i, int j)
  10. {
  11. int ans = -OO;
  12. if (!is_valid(i, j))
  13. return 0;
  14. else if (a[i][j] == 1)
  15. return 0;
  16. else if (m[{i, j}])
  17. return m[{i, j}];
  18. else
  19. {
  20. for (int k = 1; k <= c; k++)
  21. {
  22. if (k != j)
  23. {
  24. ans = max(ans, stage(i + 1, k));
  25. }
  26. }
  27. m[{i, j}] = ans;
  28. return 1 + ans;
  29. }
  30. }
  31.  
  32. void solve()
  33. {
  34. int num_of_blocks, Maxx = -OO;
  35. cin >> r >> c;
  36. for (int i = 1; i <= r and cin >> num_of_blocks; i++)
  37. {
  38. int holder = 0;
  39. while (num_of_blocks--)
  40. {
  41. cin >> holder;
  42. a[i][holder] = 1;
  43. }
  44. }
  45. for (int j = 1; j <= c; j++)
  46. Maxx = max(Maxx, stage(1, j));
  47. cout << Maxx << endl;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment