比赛 SBOI2022暑假快乐赛① 评测结果 AWAAEEEEEE
题目名称 孙伯符降临 最终得分 30
用户昵称 康尚诚 运行时间 1.158 s
代码语言 C++ 内存使用 9.47 MiB
提交时间 2022-06-25 10:12:56
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct node
{
    int atk;
    int dft;
    int num[1010];//[0]表下属总数,此后第i表示第i个下属编号 
    int xs[1010];//[i]为1表示是其下属,0表示不是 
}mst[1010]; 
//bool cmp(node a,node b)
//{
//    return a.atk<b.atk||(a.atk==b.atk&&a.dft<b.dft); 
//}
int n;
int main()
{
    freopen("sunbofu.in","r",stdin);
    freopen("sunbofu.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>mst[i].atk>>mst[i].dft;
        mst[i].num[0]=0;
        memset(mst[i].xs,1010,0);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(mst[i].xs[j]==1||i==j)//已经是下属或自身 
            {
                continue;
            }
            if((mst[i].atk>=mst[j].atk&&mst[i].dft>=mst[j].dft)&&mst[i].atk+mst[i].dft!=mst[j].atk+mst[j].dft)
            {
                mst[i].num[0]++;mst[i].num[mst[i].num[0]]=j;mst[i].xs[j]=1;
                if(mst[j].num[0]!=0)
                {
                    for(int k=1;k<=mst[j].num[0];k++)
                    {
                        if(mst[i].xs[mst[j].num[k]]==0)
                        {
                            mst[i].num[0]++;mst[i].num[mst[i].num[0]]=mst[j].num[k];mst[i].xs[mst[j].num[k]]=1;  
                        }
                    }
                }
            } 
        }
    }
    for(int i=1;i<=n;i++)
    {
        cout<<mst[i].num[0]<<endl;
    }
//    sort(mst+1,mst+1+n,cmp);
//    for(int i=1;i<=n;i++)
//    {
//        cout<<mst[i].atk<<" "<<mst[i].dft<<endl;
//    }
}