Advertisement
otot957

Untitled

Feb 13th, 2020
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. /*
  4. divide array into 2 parts such as average is equal
  5. [4,2, 1,7,1]
  6. tsum= 15
  7. tsz= 5
  8. sum=0
  9. sz=0
  10. i =0 num= 4
  11. tsum- 4= 11
  12. sum= 4
  13. sz+1;
  14. is ts/sz== sum/sz--> return indx
  15. i=1 num= 2
  16. tsum-2 = 9
  17. sum= 6
  18. sz= 2
  19. tsz= 3
  20. is tsum/ tsz== sum/sz--> return i+1
  21.  
  22.  
  23.  
  24. return the indx dividing the two subarrays if it is possible
  25. if not we return -1
  26. */
  27. int func(vector<int> arr, int tsum, int tsz){
  28.   int sum=0;
  29.   int sz= 0;
  30.   for(int i=0; i<arr.size(); i++){
  31.     tsum-= arr[i];
  32.     tsz-=1;
  33.     sum+=arr[i];
  34.     sz++;
  35.     if (tsz == 0)
  36.       return -1;
  37.     if(tsum/tsz == sum/sz)
  38.       return i+1;
  39.     else continue;
  40.  
  41.   }
  42.   return -1;
  43.    
  44. }
  45.  
  46.  
  47.  
  48. int main(){
  49.   vector<int> arr= {1,2,3,6};
  50.   int tsum=0, n=arr.size();
  51.   for(int i=0; i<arr.size(); i++){
  52.     tsum+= arr[i];
  53.    
  54.   }
  55.   int indx= func(arr, tsum, n);
  56.   if(indx == -1)
  57.     cout<<"not possible";
  58.   else{
  59.     vector<int> v1(indx);
  60.     vector<int> v2(n- indx);
  61.     for(int i=0; i<indx; i++)
  62.       v1[i]= arr[i];
  63.     for(int i=0; i+indx<n; i++){
  64.       v2[i]= arr[indx+i];
  65.     }
  66.     cout<<"v1 :";
  67.     for(int i=0; i<v1.size(); i++)
  68.       cout<<v1[i]<<" "<<endl;
  69.     cout<<"v2 :";
  70.     for(int i=0; i<v2.size(); i++)
  71.       cout<<v2[i]<<" "<<endl;
  72.   }
  73.   return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement