第一次写的时候没看懂题目,为啥早上吃第一个加3甜蜜度,原来第二行是从第1个到第n个巧克力早上吃对应的甜蜜值,第三行都是晚上吃对应的甜蜜值,看不懂的我直接打go去了呵呵
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
struct suger{
ll a; //早上吃得到的甜蜜值
ll b; //晚上吃得到的甜蜜值
}su[100005];
bool cmp(suger a,suger b){
return a.a-a.b>b.a-b.b;
}
void solve(){
ll n,k; //早上吃k个,晚上吃n-k个
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>su[i].a;//输入第i个巧克力早上吃得到的甜蜜值
for(int i=1;i<=n;i++) cin>>su[i].b;//输入第i个巧克力晚上吃得到的甜蜜值
sort(su+1,su+n+1,cmp);//按早上吃得到的甜蜜值减去晚上吃得到的甜蜜值从大到小排序
ll ans=0;
for(ll i=1;i<=k;i++) ans+=su[i].a;
for(ll i=k+1;i<=n;i++) ans+=su[i].b;
cout<<ans<<endl;
}
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t=1;//cin>>t
while(t--) solve();
return 0;
}

京公网安备 11010502036488号