fork download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int cnt_subs(vector<int>&arr){
  6. int n=arr.size();
  7. int even=1,odd=0;
  8. int curr_sum=0;
  9. int cnt=0;
  10.  
  11. for(int i=0;i<n;i++){
  12. curr_sum+=arr[i];
  13. int p;
  14. if(curr_sum%2==0){
  15. p=0;
  16. }
  17. else{
  18. p=1;
  19. }
  20.  
  21. if(p==0){
  22. cnt+=even;
  23. }
  24. else if(p==1){
  25. cnt+=odd;
  26. }
  27.  
  28. if(p==0) even++;
  29. else odd++;
  30. }
  31.  
  32. return cnt;
  33. }
  34. int main(){
  35. int n;
  36. cin>>n;
  37. vector<int>arr(n);
  38. for(int i=0;i<n;i++){
  39. cin>>arr[i];
  40. }
  41. int M=cnt_subs(arr);
  42. for(int i=0;i<n;i++){
  43. if(arr[i]%2==0){
  44. int old=arr[i];
  45. arr[i]=arr[i]+1;
  46. int cnt=cnt_subs(arr);
  47. M=max(M,cnt);
  48. arr[i]=old;
  49. }
  50. else{
  51. int old=arr[i];
  52. arr[i]=arr[i]+1;
  53. int cnt=cnt_subs(arr);
  54. M=max(M,cnt);
  55. arr[i]=old;
  56. }
  57. }
  58. cout<<"Number of subarrays of even sum after performing the operation: "<<M<<endl;
  59. return 0;
  60. }
Success #stdin #stdout 0.01s 5284KB
stdin
4
1 2 3 4
stdout
Number of subarrays of even sum after performing the operation: 6