家人们,谁懂啊?为什么我的代码总是WA #10 呀???集帅们快来康康
查看原帖
家人们,谁懂啊?为什么我的代码总是WA #10 呀???集帅们快来康康
817044
cjwdyzxfblzs楼主2023/5/26 15:51

我好菜,悬赏一个关注


#include <bits/stdc++.h>

using namespace std;

#define int long long
#define INF32_MAX 2147483647

inline int read()
{
    int x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9')
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        x = x * 10 + ch - 48;
        ch = getchar();
    }
    return x * f;
}

const int N = 2e6;

int n, m;

struct part
{
    int a, b, id;
    bool operator<(const part &B) const
    {
        return b < B.b;
    }
} arr[N];

struct actor
{
    int a, b, c, id;
    bool operator<(const actor &B) const
    {
        return a < B.a;
    }
} crr[N];

int num[N];

signed main()
{
    n = read();
    for (int i = 1, a, b; i <= n; i++)
        a = read(), b = read(),
        arr[i] = {a, b, i};
    sort(arr + 1, arr + n + 1);

    m = read();
    for (int i = 1, c, d, k; i <= m; i++)
        c = read(), d = read(), k = read(),
        crr[i] = {c, d, k, i};
    sort(crr + 1, crr + m + 1);

    int sum = 0;
    for (int i = 1; i <= n; i++)
    {
        bool flag = false;
        for (int j = 1; j <= m; j++)
        {
            if (crr[j].a > arr[i].a)
                break;
            if (crr[j].c == 0)
                continue;
            if (arr[i].b > crr[j].b)
                continue;
            num[arr[i].id] = crr[j].id;
            crr[j].c--;
            sum++;
            flag = true;
            break;
        }
        if (!flag)
        {
            cout << "NO"
                 << "\n";
            exit(0);
        }
    }

    cout << "YES"
         << "\n";
    for (int i = 1; i <= n; i++)
        cout << num[i] << " ";

    return 0;
}
2023/5/26 15:51
加载中...