原题
注意:可能题目描述不一样,但是意思、代码是一样的。
公司招聘(employ)
【题目描述】
ZEY想开一家公司,叫浴谷公司,新公司缺人手,于是ZEY就跑到学校里面去招人了。为了体现“男女平等”的思想,ZEY规定不能只招男性员工或只招女性员工,男性员工不得超过
X
X
X 人,女性员工不得超过
Y
Y
Y 人(可以等于)。招聘流程分为面试和笔试,满分都为
100
100
100 分。应聘者至少需要一轮测试获得
80
80
80 分以上(含
80
80
80 ),另一轮测试及格(
60
60
60 及其以上)才能被聘用,当然,如果某性别满足条件过多,也只会聘用规定的人数。
现在,有
N
N
N 名应聘者,给出每名应聘者的性别、笔试分数和面试分数,请编写程序计算在这一场招聘中,公司能够录用多少人。
【输入说明】
输入文件名为 employ.in 。输入分
N
+
1
N+1
N+1 行。
第一行输入
N
N
N 、
X
X
X 和
Y
Y
Y ,表示应聘人数,男性员工上限,女性员工上限。
后面
N
N
N 行,每行输入
3
3
3 个数据,分别是性别(男性为
M
M
M ,女性为
W
W
W ),笔试分数和面试分数(均为整数)。
【输出说明】
输出文件名为 employ.out
输出一个整数,表示聘用人数。
输入样例1:
4 2 2
M 78 80
W 78 75
W 92 88
M 81 58
输出样例1:
2
【样例说明】
第1个和第三个应聘者符合聘用条件,因此聘用两人。
【数据说明】
对于 100 100% 100的数据 ,有 1 ≤ N , X , Y ≤ 100 1 \le N,X,Y \le 100 1≤N,X,Y≤100
题解:
代码:
#include<cstdio>
signed main(){
freopen("employ.in","r",stdin);
freopen("employ.out","w",stdout);
int m,k,n,ans=0;
char f;
scanf("%d%d%d",&k,&m,&n);
for(int i=1,a,b;i<=k;++i){
scanf(" %c %d %d",&f,&a,&b);
switch(f){
case 'M':
if(m&&((a>=60&&b>=80)||(a>=80&&b>=60)))--m,++ans;
break;
case 'W':
if(n&&((a>=60&&b>=80)||(a>=80&&b>=60)))--n,++ans;
break;
}
}
printf("%d",ans);
return 0;
}
题目太简单。尽管只要学过循环且仔细看题的人都能AC,但是还要说一下:
scanf
中 %c
前加空格可以忽略一切其它没用字符(比如空格,回车)。