Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- /*
- divide array into 2 parts such as average is equal
- [4,2, 1,7,1]
- tsum= 15
- tsz= 5
- sum=0
- sz=0
- i =0 num= 4
- tsum- 4= 11
- sum= 4
- sz+1;
- is ts/sz== sum/sz--> return indx
- i=1 num= 2
- tsum-2 = 9
- sum= 6
- sz= 2
- tsz= 3
- is tsum/ tsz== sum/sz--> return i+1
- return the indx dividing the two subarrays if it is possible
- if not we return -1
- */
- int func(vector<int> arr, int tsum, int tsz){
- int sum=0;
- int sz= 0;
- for(int i=0; i<arr.size(); i++){
- tsum-= arr[i];
- tsz-=1;
- sum+=arr[i];
- sz++;
- if (tsz == 0)
- return -1;
- if(tsum/tsz == sum/sz)
- return i+1;
- else continue;
- }
- return -1;
- }
- int main(){
- vector<int> arr= {1,2,3,6};
- int tsum=0, n=arr.size();
- for(int i=0; i<arr.size(); i++){
- tsum+= arr[i];
- }
- int indx= func(arr, tsum, n);
- if(indx == -1)
- cout<<"not possible";
- else{
- vector<int> v1(indx);
- vector<int> v2(n- indx);
- for(int i=0; i<indx; i++)
- v1[i]= arr[i];
- for(int i=0; i+indx<n; i++){
- v2[i]= arr[indx+i];
- }
- cout<<"v1 :";
- for(int i=0; i<v1.size(); i++)
- cout<<v1[i]<<" "<<endl;
- cout<<"v2 :";
- for(int i=0; i<v2.size(); i++)
- cout<<v2[i]<<" "<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement