Untitled
#include<iostream> using namespace std; int partition(int a[], int l, int r){ int pivot = a[r]; int i = l - 1; for (int j = l; j < r; j++){ if (a[j] > pivot){ i++; swap(a[i], a[j]); } } i++; swap(a[i], a[r]); return i; } void quickSort(int a[], int l, int r){ if (l < r){ int p = partition(a, l, r); quickSort(a, l, p - 1); quickSort(a, p + 1, r); } } void inMang(int a[],int n){ cout << endl; for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; } int main(){ freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); int t; cin >> t; int number = 1; while (t > 0){ t--; int n, m1, m2,total=0; cin >> n >> m1 >> m2; int a[55]; for (int i = 0; i < n; i++) { cin >> a[i]; } // sort lai vien gach theo can nang giam dan quickSort(a, 0, n - 1); //inMang(a, n); int cc = (m1<m2) ? m1 : m2; int id1 = 0, id2 = 1,tang=1; while (m1>0 && m2 > 0){ total += a[id1] * tang; total += a[id2] * tang; id1 += 2; id2 += 2; tang++; m1--; m2--; } //cout << id1 << " " << id2 << endl; int mm = (m1 > 0) ? m1 : m2; //cout << mm << endl; int idx = (id1 < id2) ? id1 : id2; //cout << m1<<" " <<m2 << endl; //inMang(a, n); while (mm > 0){ total += a[idx++] * tang; tang++; mm--; } //cout << tang << endl; //inMang(a, n); printf("#%d %d", number++, total); cout << endl; } }
Leave a Comment