fork download
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. vector<int> fun(vector<int>&a,vector<int>&b,int n){
  5. vector<vector<int>>dpe(n,vector<int>(2,0));
  6. vector<vector<int>>dpo(n,vector<int>(2,0));
  7. if(a[0]%2==0){
  8. dpe[0][0]=1;//-> dp[i][0]number of even journeys till index i of first array
  9. }
  10. if(a[0]%2!=0){
  11. dpo[0][0]=1;
  12. }
  13. if(b[0]%2==0){
  14. dpe[0][1]=1;
  15. }
  16. if(b[0]%2!=0){
  17. dpo[0][1]=1;
  18. }
  19.  
  20.  
  21. for(int i=1;i<n;i++){
  22. if(a[i]%2==0){
  23. dpe[i][0]=dpe[i-1][0]+dpe[i-1][1];
  24. dpo[i][0]=dpo[i-1][0]+dpo[i-1][1];
  25. }
  26. else{
  27. dpe[i][0]=dpo[i-1][0]+dpo[i-1][1];
  28. dpo[i][0]=dpe[i-1][0]+dpe[i-1][1];
  29. }
  30. if(b[i]%2==0){
  31. dpe[i][1]=dpe[i-1][0]+dpe[i-1][1];
  32. dpo[i][1]=dpo[i-1][0]+dpo[i-1][1];
  33. }
  34. else{
  35. dpe[i][1]=dpo[i-1][0]+dpo[i-1][1];
  36. dpo[i][1]=dpe[i-1][0]+dpe[i-1][1];
  37. }
  38. }
  39.  
  40. return {dpe[n-1][0]+dpe[n-1][1],dpo[n-1][0]+dpo[n-1][1]};
  41.  
  42. }
  43. int main()
  44. {
  45. vector<int>a={2,2};
  46. vector<int>b={4,1};
  47. vector<int>ans=fun(a,b,2);
  48. for(int i:ans){
  49. cout<<i<< " ";
  50. }cout<<endl;
  51. return 0;
  52. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
2  2