CF#151 div 2

2028 ワード

前の4題はみな簡単で,最後の1題はまだやっていない.
前の2題は簡単でコードを貼るのがおっくうだ.
C.実はとても简単で、しかしある地方が间违っていることを考虑したため、それから人にhackを落とされて、1时间の试合をして寝たので、起きてからやっとhackを発见して、だからわざわざテーマをもう一度やり直して、水题Aを発见するのはやはり少し挫折します.
コードを貼ってください.
void solveC()
{
    int n,k;
    cin>>n>>k;
    for(int i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
     sort(a,a+n);
     int num=0;
     for(int i=0;i<n;i++)
     {
         for(int j=n-i-1;j>=0;j--)
         {
             cout<<i+1;
             for(int l=n-1;l>=n-i;l--)
             {
                 cout<<" "<<a[l];
             }
             cout<<" "<<a[j]<<endl;
             num++;
             if(num>=k)break;
         }
         if(num>=k)break;
     }

}

D.
struct kdq
{
    int u,v;
    int next;
} edge[1000005];

int num=0;
int head[100005];

void insert(int u,int v)
{
    edge[num].u=u;
    edge[num].v=v;
    edge[num].next=head[u];
    head[u]=num++;
}
set<int >vv[100005];
int vis[100005];
void solveD()
{
    int n,m;
    cin>>n>>m;
    memset(head,-1,sizeof(head));
    for(int i=1; i<=n; i++)
        scanf("%d",&a[i]);
    while(m--)
    {
        int a1,b1;
        scanf("%d%d",&a1,&b1);
        insert(a1,b1);
        insert(b1,a1);
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=head[i]; j!=-1; j=edge[j].next)
        {
            int v=edge[j].v;
            if(a[i]!=a[v])//                    
            vv[a[i]].insert(a[v]);
        }
    }
    int ans=-1;
    int color=-1;
    for(int i=1; i<=n; i++)
    {
        if(vis[a[i]])continue;
        int kk=vv[a[i]].size();
        if(kk>ans)
        {
            ans=kk;
            color=a[i];
        }
        else if(kk==ans)
        {
            if(color>a[i])
                color=a[i];
        }
        vis[a[i]]=1;
    }
    printf("%d
",color); }

E.