fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void executeTime() {
  5. cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " secs";
  6. }
  7.  
  8. int main() {
  9.  
  10.  
  11. int n; cin >> n;
  12.  
  13. vector<int> a(n), b(n);
  14. for (auto &x : a) {
  15. cin >> x;
  16. }
  17.  
  18. for (auto &x : b) {
  19. cin >> x;
  20. }
  21.  
  22. vector<array<int, 2>> dp_a(n, array<int, 2> ({0, 0})), dp_b(n, array<int, 2> ({0, 0}));
  23.  
  24. int p = 0;
  25. if (a[0] & 1) p = 1;
  26.  
  27. dp_a[0][p] = 1;
  28.  
  29. p = 0;
  30. if (b[0] & 1) p = 1;
  31. dp_b[0][p] = 1;
  32.  
  33. for (int i = 1; i < n; i++) {
  34. if (a[i] & 1) {
  35. dp_a[i][0] = dp_a[i - 1][1] + dp_b[i - 1][1];
  36. dp_a[i][1] = dp_a[i - 1][0] + dp_b[i - 1][0];
  37. } else {
  38. dp_a[i][0] = dp_a[i - 1][0] + dp_b[i - 1][0];
  39. dp_a[i][1] = dp_a[i - 1][1] + dp_b[i - 1][1];
  40. }
  41.  
  42. if (b[i] & 1) {
  43. dp_b[i][0] = dp_a[i - 1][1] + dp_b[i - 1][1];
  44. dp_b[i][1] = dp_a[i - 1][0] + dp_b[i - 1][0];
  45. } else {
  46. dp_b[i][0] = dp_a[i - 1][0] + dp_b[i - 1][0];
  47. dp_b[i][1] = dp_a[i - 1][1] + dp_b[i - 1][1];
  48. }
  49. }
  50.  
  51. cout << dp_a[n - 1][0] + dp_b[n - 1][0] << endl;
  52.  
  53. executeTime();
  54. return 0;
  55. }
  56.  
Success #stdin #stdout #stderr 0.01s 5292KB
stdin
2 
2 4
2 1 
stdout
2
stderr
Time Taken: 0.005147 secs