WA #10 求助
查看原帖
WA #10 求助
351679
shaun2000楼主2024/7/18 22:14

#include<bits/stdc++.h>

using namespace std;

struct part{
    int l,r,id;
}p[100005];
struct perf{
    int l,r,k,id;
}f[100005];
int ans[100005],book[100005];

bool cmp1(part a,part b)
{
    if(a.l==b.l)
        return a.r>b.r;
    else
        return a.l<b.l;
}

bool cmp2(perf a,perf b)
{
    if(a.l==b.l)
        return a.r<b.r;
    else
        return a.l<b.l;
}

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&p[i].l,&p[i].r);

	for(int i=1;i<=n;i++)
		p[i].id=i;

    int m;
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
        scanf("%d%d%d",&f[i].l,&f[i].r,&f[i].k);

	for(int i=1;i<=m;i++)
		f[i].id=i;

    sort(p+1,p+n+1,cmp1);
    sort(f+1,f+m+1,cmp2);
    for(int i=1;i<=m;i++)
        book[i]=f[i].k;
        
    for(int i=1;i<=n;i++)
    {
        bool flag=true;
        for(int j=1;j<=m;j++)
        {
            if(book[j]<=0)
                continue;
                
            if(p[i].l>=f[j].l && p[i].r<=f[j].r)
            {
                flag=false;
                ans[p[i].id]=f[j].id;
                book[j]--;
                break;
            }            
        }
        
		if(flag)
        {
            cout<<"NO";
            return 0;
        }
    } 

    cout<<"YES\n";
    for(int i=1;i<=n;i++)
        printf("%d ",ans[i]);

    return 0;

}
2024/7/18 22:14
加载中...