// http://codeforces.com/problemset/problem/779/C
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Program {
    static void Main() {
        var input = Enumerable.Range(0, 3).Select(i => Console.ReadLine());
        var cs = Case.Parse(input);
        Console.WriteLine(cs);
        Console.WriteLine("Result: {0}", cs.Solve());
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public static class LinqEx
{
    public static IEnumerable<KeyValuePair<int, T>> Enumerate<T>(this IEnumerable<T> sequence)
	{
		int index = 0;
		
		foreach (var item in sequence)
		{
			yield return new KeyValuePair<int, T>(index++, item);
		}
	}
	
	public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> sequence, params Func<T, bool>[] predicates)
	{
		foreach (var p in predicates)
		{
			var current = sequence.Where(p);
			sequence = sequence.Except(current);
			yield return current;
		}
	}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Price
{
    public int Discount { get; set; }
    public int Normal { get; set; }
    
    public Price(int discount, int normal)
    {
        Discount = discount;
        Normal = normal;
    }
    
    public override string ToString()
    {
        return $"{nameof(Discount)} = {Discount}; {nameof(Normal)} = {Normal}";
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Case
{
    public int N { get; set; }
    public int K { get; set; }
    public Price[] Prices { get; set; }
    
    public static Case Parse(IEnumerable<string> lines)
    {
        var result = new Case();
        var arr = lines.ToArray();
        var items = arr[0].Split(' ').Select(int.Parse).ToArray();
        result.N = items[0];
        result.K = items[1];
        var i1 = arr[1].Split(' ').Select(int.Parse);
        var i2 = arr[2].Split(' ').Select(int.Parse);
        result.Prices = i1.Zip(i2, (d, n) => new Price(d, n)).ToArray();
        return result;
    }
    
    public int Solve()
    {
		var result = new List<int>();
		var need = N;
		
		var groups = Prices
			.OrderBy(p => p.Discount)
			.Split(
                p => p.Discount < p.Normal, 
                p => p.Discount == p.Normal, 
                p => p.Discount > p.Normal
				);
		
		foreach (var pair in groups.Enumerate())
		{
			if (result.Count >= N)
				break;
			
			switch (pair.Key)
			{
				case 0: {
					result.AddRange(pair.Value.Take(need).Select(p => p.Discount));
					need -= result.Count;
				} break;
				case 1: {
					var items = pair.Value.Take(need).Select(p => p.Discount).ToArray();
					
					if (items.Length > 0) {
						result.AddRange(items);
						need -= items.Length;
					}
				} break;
				case 2: {
					var group = pair.Value.OrderBy(p => p.Discount - p.Normal);
											
					if (result.Count < K) {
						var items = group.Take(K - result.Count);
						result.AddRange(items.Select(p => p.Discount));
						result.AddRange(group.Except(items).Select(p => p.Normal));
					}
					else {
						result.AddRange(group.Take(need).Select(p => p.Normal));
					}
				} break;
			}
		}
	
        return result.Sum();
    }
    
    public override string ToString()
    {
        var pricesStr = Prices != null ? string.Join("\n", Prices.AsEnumerable()) : "";
        return $"{nameof(N)} = {N}; {nameof(K)} = {K}\n{pricesStr}";
    }
}