File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+
3+ using namespace std ;
4+
5+ void merge (vector <int > &v, int left,int mid,int right){
6+ int i = left;
7+ int j = mid+1 ;
8+ vector<int > temp;
9+ while (i<=mid && j<=right){
10+ if (v[i]<v[j]){
11+ temp.push_back (v[j]);
12+ j++;
13+ }
14+ else { temp.push_back (v[i]);
15+ i++;
16+ }
17+ }
18+
19+ while (i<=mid){
20+ temp.push_back (v[i]);
21+
22+ i++;
23+ }
24+ while (j<=right){
25+ temp.push_back (v[j]);
26+ j++;
27+ }
28+
29+ for (int i= left; i<=right; i++){
30+ v[i] = temp[i-left];
31+ }
32+
33+ }
34+
35+ void mergeSort (vector<int > &v,int l,int r){
36+
37+ if (l<r){
38+ int mid = (l+r)/2 ;
39+ mergeSort (v,l,mid);
40+ mergeSort (v,mid+1 ,r);
41+ merge (v,l,mid,r);
42+ }
43+ }
44+
45+ int sum (vector<int > v,int size){
46+ int sum = 0 ;
47+ for (int i=0 ; i<size; i++){
48+ sum+=v[i];
49+ }
50+
51+ return sum;
52+ }
53+
54+ int main () {
55+ // freopen("input.txt","r",stdin);
56+ int n;
57+ cin>>n;
58+ vector<int > v1;// odd
59+ vector<int > v2;
60+
61+ int sumAll = 0 ;
62+ for (int i=0 ; i<n; i++){
63+ int a;
64+ cin>>a;
65+
66+ sumAll+=a;
67+ if (a&1 ) v1.push_back (a);
68+ else v2.push_back (a);
69+ }
70+
71+ mergeSort (v1,0 ,v1.size ()-1 );
72+ mergeSort (v2,0 ,v2.size ()-1 );
73+ int size1=v1.size ();
74+ int size2=v2.size ();
75+ int range = min (v1.size (),v2.size ());
76+ if (v1.size ()>range) size1 = range+1 ;
77+ if (v2.size ()>range) size2 = range+1 ;
78+
79+ int sum1 = sum (v1,size1);
80+ sum1+=sum (v2,size2);
81+ int ans = sumAll-sum1;
82+ cout<<ans<<endl;
83+ }
You can’t perform that action at this time.
0 commit comments