Quân và K-1 người bạn của Quân muốn mua N bông hoa,bông hoa thứ i có giá là Ci.Biết được các bạn đang cần N bông hoa, vì vậy ông bán hàng vì tham lam nên đã tăng giá cho các bông hoa mà một khách hàng mua nhiều hơn một bông hoa. Cụ thể, nếu một người cần mua 3 bông hoa với giá lần lượt là C1,C2,C3, thì bông thứ nhất ông bán đúng giá C1, bông thứ 2 ông bán với giá 2C22∗C2, bông thứ 3 ông bán với giá là 3C33∗C3,vì vậy khách hàng đó phải trả C1+2C2+3C3C1+2∗C2+3∗C3 đồng để mua được 3 bông hoa. Yêu cầu: Hãy giúp nhóm của Quân chọn cách mua đủ N bông hoa sao cho tổng tiền phải trả là ít nhất.Biết rằng Quân có thể chọn mua các bông hoa theo bất kì thứ tự nào. Mô tả đầu vào Gồm 2 dòng: • Dòng đầu tiên chứa hai số nguyên N, K tương ứng là số bông hoa cần mua và số lượng các người bạn trong nhóm bao gồm cả Quân (1 ≤ N, K ≤ 1000). • Dòng thứ 2 chứa N số nguyên C1, C2, .., CN cách nhau một khoảng cách cho biết giá của N bông hoa (1 ≤ C_i ≤ 10^6)(1≤C i ≤10 6 ). Mô tả đầu ra Một số nguyên duy nhất là số tiền tối thiểu mà nhóm bạn phải trả. Test case mẫu Đầu vào mẫu 1 5 4 65 39 44 30 90 Đầu ra mẫu 1 298
1 câu trả lời
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long t=0,z=2,n,m;
cin>>n>>m;
long long a[n+1];
for (int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
for (int i=n;i>n-m;i--)
{
t+=a[i];
}
for (int i=n-m;i>0;i--)
{
t+=a[i]*z;
z++;
}
cout<<t;
}
Câu hỏi trong lớp
Xem thêm