Untitled
user_7940789
c_cpp
a year ago
1.5 kB
9
Indexable
#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;
}
}Editor is loading...
Leave a Comment