C. Beautiful Regional Contest

 

三種獎牌中,每一種都必須至少頒發一枚獎牌(即g>0、s>0和b>0);

金牌數必須嚴格小於銀牌數和銅牌數(即g<s和g<b,但s和b之間沒有要求);

每一個金牌獲得者都必須比任何一個銀牌獲得者更嚴格地解決問題;

每一個銀牌獲得者都必須比任何一個銅牌獲得者更嚴格地解決問題;

每位銅牌獲得者必須比任何未獲得獎牌的參與者更嚴格地解決問題;

獎牌獲得者g+s+b的總數不應超過所有參賽者的一半(例如,如果n=21,則最多可獎勵10名參賽者;如果n=26,則最多可獎勵13名參賽者)

 

    int n,m,t;
    int i,j,k;
    int a[N];
    map<int,int> mp;

int main()
{
    //IOS;
    rush(){
        sd(n); mp.clear();
        for(i=1;i<=n;i++){ sd(a[i]); mp[a[i]]++;}
        int x=0,y=0,z=0,pos;
        if(n<10){ pddd(x,y,z); continue;}
        x=mp[a[1]];
        pos=x+1;
        y=x;//保證銀牌比金牌多
        pos=x+y+1;
        for(i=pos;i<=n;i++){
            if(a[pos]==a[i]) y++;
        }
        z=n/2-x-y;
        if(z<=0){ pddd(0,0,0); continue; }
        else{
            pos=n/2;
            if(a[pos]==a[pos+1])
            {
                int num=0;
                for(i=pos;i>=1;i--)
                    if(a[pos]==a[i]) num++;
                z-=num;
            }
            if(z<=0||z<=x) pddd(0,0,0);//銅牌比金牌多
            else pddd(x,y,z);
        }
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章