Cho N sợi dây với độ dài khác nhau được lưu trong mảng A[]. Nhiệm vụ của bạn là nối N sợi dây thành một sợi sao cho tổng chi phí nối dây là nhỏ nhất. Biết chi phí nối sợi dây thứ i và sợi dây thứ j là tổng độ dài hai sợi dây A[i] và A[j].
-
Input:
Dòng đầu ghi số bộ test T (T<10). Mỗi bộ test gồm 2 dòng. Dòng đầu tiên là số nguyên N (N ≤ 2*10^6).
Dòng tiếp theo gồm N số nguyên dương c[i] ( 1 ≤ A[i] ≤ 10^9). -
Output:
In ra đáp án của bộ test trên từng dòng, theo modulo 10^9+7. -
Ví dụ:
-
Input:
7
2 4 1 2 10 2 3 -
Output:
59
-
-
code C++ của em bị sai chỗ nào, mong anh chị hỗ trợ ạ.
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
vector <int> v;
cin >> n;
v.resize(n);
for(int i=0; i<n; i++){
cin >> v[i];
}
int sum=0;
while(n>1){
sort(v.begin(), v.end());
v[0]=v[0]+v[1];
v.erase(v.begin()+1);
n--;
sum+=v[0];
}
cout << sum;
}