
function Main(input) {
    var N = parseInt(input[0], 10); // カードの枚数
    var M = parseInt(input[1], 10); // 操作の回数
    var A = input.slice(2, 2 + N).map(v => parseInt(v, 10)); // 各カードに書かれてる数
    var BC = input.slice(2 + N).map(v => parseInt(v, 10));

    var B = []; // 操作ごとの変換可能枚数
    var C = []; // 操作ごとの変換後の数値

    BC.forEach((value, index) => {
        if (index % 2 === 0) {
            B.push(value);
        } else {
            C.push(value);
        }
    });

    // 先にソートする
    A.sort((a, b) => a - b);

    for (var actionIndex = 0; actionIndex < M; actionIndex++) {
        for (var bIndex = 0; bIndex < B[actionIndex]; bIndex++) {
            if (A[bIndex] < C[actionIndex]) {
                A[bIndex] = C[actionIndex];
            } else {
                bIndex = B[actionIndex]; // 操作を行う必要がないので無理やりforループを止める
            }
        }
        A.sort((a, b) => a - b); // 操作ごとにソートかける
    }

    var sum = 0;
    for (var i = 0; i < A.length; i++) {
        sum += A[i];
    }
    console.log(sum);
}

Main(require("fs").readFileSync("/dev/stdin", "utf8").trim().split(/\n|\s/));