WA on #7,麻了(悬赏关注)
查看原帖
WA on #7,麻了(悬赏关注)
329698
youdu666楼主2022/11/14 22:42

其他的都对了,求大佬帮助

#include<bits/stdc++.h>
using namespace std;
inline int read(void)
{
    int x=0,y=1;
    char c=getchar();
    while(c>'9'||c<'0')
    {
        if(c=='-')
            y=-1;
        c=getchar();
    }
    while(c<='9'&&c>='0')
    {
        x=x*10+c-'0';
        c=getchar();
    }
    return x*y;
}
const int To=3e4,N=5e6+5;
int t[To+5],n,a[N],m,nn;
int ansa,ansb,x;
int cnt[999];
inline int p(int a,int b)
{
    if(!(a%b))return a/b;
    return (a/b)+1;
}
signed main()
{
    n=read(),m=read();
    for(int i=1;i<=n;i++)
        x=read(),t[x]++;
    for(int i=1;i<=To;i++)
    for(int j=1;j<=t[i];j++)
    a[++nn]=i;
    if(m<=0)
    {
        printf("0 0\n");
        return 0;
    }
    int pp=0;
    bool fk=false;
    for(int i=1;i<=n;i++)
    {if(!a[i])continue;
        a[i]-=pp;
        if(a[i]>3)
        {
            if(fk)break;
            ansa+=a[i]/3;
            pp=ansa*3;
            a[i]%=3;
        }
        cnt[a[i]]++;
        if((cnt[1])+(cnt[2]*2)+((cnt[0]+cnt[3])*3)>=m)
            fk=true;
    }
    if((cnt[1])+(cnt[2]*2)+((cnt[0]+cnt[3])*3)<m)
    {
        printf("Human Cannot Win Dog\n");
        return 0;
    }
    cnt[3]+=cnt[0];
    // printf("%d %d %d\n",cnt[1],cnt[2],cnt[3]);
    if(cnt[2]*2<m)
    {
        m-=cnt[2]*2;
        ansb+=cnt[2];
        if(cnt[1]<m)
        {
            ansb+=cnt[1];
            m-=cnt[1];
            ansb+=p(m,3)*4;
            m-=p(m,3)*3;
            if(m<0)
            {
                ansb-=min(abs(m),cnt[1]);
            }
        }
        else
        {
            ansb+=m;
        }
    }
    else
    {
        ansb+=p(m,2);
    }
    printf("%d %d\n",ansa,ansb+ansa);
}
2022/11/14 22:42
加载中...