救民于水火

caochenshuo 2023-11-25 17:35:34 6 返回题目

#include <bits/stdc++.h>
using namespace std;
const int N = 5 * 1e6 + 10;
int b[N];
struct rec {
    int l, r;
} a[510];
int cmp(rec x, rec y) { return x.r > y.r; }
int main() {
    int m, n, flag, sum;
    scanf("%d%d", &m, &n);
    sum = m;
    for (int i = 1; i <= n; i++) {
        scanf("%d", &a[i].l);
    }
    for (int i = 1; i <= n; i++) {
        scanf("%d", &a[i].r);
    }
    sort(a + 1, a + n + 1, cmp);
    for (int i = 1; i <= n; i++) {
        flag = 1;
        for (int j = a[i].l; j >= 1; j--) {
            if (b[j] == 0) {
                flag = 0;
                b[j] = 1;
                break;
            }
        }
        if (flag) {
            for (int j = n; j >= 1; j--) {
                if (b[j] == 0) {
                    b[j] = 1;
                    break;
                }
            }
            sum -= a[i].r;
        }
    }
    printf("%d", sum);
    return 0;
}
{{ vote && vote.total.up }}