Untitled

 avatar
user_7940789
c_cpp
a month ago
1.5 kB
5
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;
		
	}
}
Leave a Comment