icpc:problems:luogup1109
problems | |
---|---|
名称 | 学生分组 |
题目编号 | P1109 |
题目链接 | luogu.com.cn/… |
来源 | Luogu |
算法分类 | 贪心 |
难易程度 | 容易 |
学生分组
想法
先判断最平均的情况(最坏情况)是否在给定范围内,不在即-1。
求出所有要出的学生个数,所有要入的学生个数,取最优值。因为出的人可以入,入的人可以出。保证最不能保证的即可。
代码实现
#include<cstdio> #include<cmath> int line[60]; int main() { int n, l, r, sum = 0; scanf("%d", &n); for(int i=1; i<=n; i++) { scanf("%d", &line[i]); sum += line[i]; } scanf("%d %d", &l, &r); if(ceil( sum*1.0 / n) > r || floor(sum*1.0/n) < l) { printf("-1"); return 0; } int in = 0, out = 0; for(int i=1; i<=n; i++) { if(line[i] < l) in += (l - line[i]); else if(line[i] > r) out += (line[i] - r); } printf("%d", in > out ? in : out); return 0; }
/app/www/public/data/pages/icpc/problems/luogup1109.txt · 最后更改: 2024/03/16 11:42 由 温婕莺