分奖金(multiset)

分奖金

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 252   Solved: 156
[ Submit][ Status][ Web Board]

Description

校acm竞赛决定给参赛选手发奖金了!当然,只有做题数量最多的选手(可能有多个)能平分奖金。
今年奖金总共为C元,有n名参赛选手,已知他们的做题数量。
求做题最多的选手每人能获得多少奖金?

Input

第一行只有一个整数T(1<=T<=20),表示数据组数。
每组数据第一行有2个整数C, n(1<=C<=888, 1<=n<=100);
第二行有n个整数Pi(0<=Pi<=11), 表示每个人做题的数量。
输入保证至少有一个人做出题目。

Output

对于每一组数据输出一个整数,表示人均奖金(只保留整数部分)。

Sample Input

2
20 3
6 6 5
20 4
5 5 5 4

Sample Output

10
6


代码:
#include<set> 
#include<cstdio> 
using namespace std; 
  
multiset<int> mst; 
  
int main() 
{ 
    int t; 
    scanf("%d",&t); 
    int c,n; 
    while(t--) 
    { 
        mst.clear(); 
        int maxx=-999; 
        scanf("%d%d",&c,&n); 
        for(int i=1; i<=n; i++) 
        { 
            int x; 
            scanf("%d",&x); 
            if(x>maxx) 
            { 
                maxx=x; 
            } 
            mst.insert(x); 
        } 
        multiset<int>::iterator it; 
        it=lower_bound(mst.begin(),mst.end(),maxx); 
        int cnt=0; 
        while(it!=mst.end()) 
        { 
            it++; 
            cnt++; 
        } 
        int ans=c/cnt; 
        printf("%d\n",ans); 
    } 
    return 0; 
} 


你可能感兴趣的:(STL)