一共有n 道题,有m 个人来参加考试,已知我每道题在所有参赛选手中的排名,问n 道题加起来计算总分的排名最小可能值与最大可能值。
显然(一点也不显然)
总分A比总分B高当且仅当A的每道题都比B高
于是我们统计每场最多有多少人至少一场比我高,最多有多少人一场比我低即可
const int N = 1e3 + 79;
const int M = 1e4 + 79;
int rank[N];
int n, m;
int main() {
freopen("rank.in","r",stdin);
freopen("rank.out","w",stdout);
read(n);
read(m);
rep(i, 1, n) {
read(rank[i]);
}
int tot(0);
rep(i,1,n){
tot+=m-rank[i];//比我高的人的人数
}
out(m-min(m-1,tot),'
');
tot=0;
rep(i,1,n){
tot+=rank[i]-1;
}
out(1+min(m-1,tot),'
');
return 0;
}
对于求最小的排名,我们假设我每个题都考1-eps分,总分就是n-eps,如果某人的某题分数比我小,那么就当他爆0(0+eps),那么这个人的总分肯定小于我(n-eps)。就相当于比我大的看做1分,比我小的当做0分.