//来个优先队列的写法
//满足a.top() >= b.top()就同时消去

void solve()
{
    int n, x, y;
    cin >> n >> x >> y;
    priority_queue<int, vector<int>, greater<int>> a;
    priority_queue<int, vector<int>, greater<int>> b;
    for (int i = 0; i < n; i++)
    {
        int num; cin >> num;
        a.push(num);
    }

    for (int i = 0; i < n; i++)
    {
        int num; cin >> num;
        b.push(num);
    }

    while (a.top() >= b.top())
    {
        a.pop();
        b.pop();
    }

    while (x--)
    {
        if (y > a.top())
        {
            a.pop();
            a.push(y);
        }
        else
            break;
    }

    long long t = 0;
    while (!a.empty())
    {
        if(b.top()-t<=a.top())
        {
            a.pop();
            b.pop();
            continue;
        }
        
        t += (b.top() - t - a.top());
        a.pop();
        b.pop();
    }
    cout << t << endl;
}