题目链接:见这里
题意:给了一些物品,每个物品有俩个价格,一个是打折前的,一个是打折后的(打折发生在一周后),现在一个人必须先买k个物品,然后剩下的物品既可以选择现在买,也可以选择一周后买,其中打折后的价格不一定比现有价格低,无良商人,大家都懂。
解法:我们先考虑一下必须买的k个物品,肯定要优先选择那些打折后变贵的物品,并且在变得同等贵的时候,我们要优先买现在价格大的。买完k个之后,剩下的就是俩个价格取个小,这题就做完了。

//CF 779C
#include <bits/stdc++.h>
using namespace std;
struct node{
    int x, y;
    node(){}
}a[200010];
bool cmp(node a, node b){
    if((a.x - a.y) == (b.x - b.y)){
        return a.y > b.y;
    }
    return (a.x - a.y) < (b.x - b.y);
}
int n, k;
int main()
{
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= n; i++) scanf("%d", &a[i].x);
    for(int i = 1; i <= n; i++) scanf("%d", &a[i].y);
    sort(a + 1, a + n + 1, cmp);
    int ans = 0;
    for(int i = 1; i <= n; i++){
        if(i <= k) ans += a[i].x;
        else ans += min(a[i].x, a[i].y);
    }
    printf("%d\n", ans);
    return 0;
}