题目描述
学校将要举行一年一度的文艺汇演,笑笑所在年级决定排练一个舞蹈,为选择表演者,老师定下了如下规则:为了舞蹈的美观,当且仅当一男一女的身高之差不超过给定的整数c时,这两个人可以成为舞伴进行演出。笑笑所在年级共有m名男生和n名女生,给定每个人身高(身高是120到220之间的整数),问最多能有多少对舞蹈者进行演出。
例如,有3名女生和3名男生,女生的身高分别是160厘米、170厘米、180厘米,男生的身高分别为170厘米、175厘米、185厘米,c=7厘米。那么最多有2对舞蹈者:可以是女2和男1一组,女3和男2一组,共2组(女1不能和任何男生成为一组),所以这个情况下2将成为最后的答案。
输入
输入分三行:
第一行三个整数m、n、c,分别表示男生人数、女生人数和身高最大差值。
第二行m个整数,分别表示m个男生的身高。
第三行n个整数,分别表示n个女生的身高。
输出
仅一个整数,表示舞蹈者组数的最大数目。
样例输入 Copy
3 3 7 170 185 175 160 170 180
样例输出 Copy
2
提示
数据规模:
100%数据,满足m,n≤1000
分类 贪心 ybttg
题解
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1005;
int man[MAXN],woman[MAXN];
int m,n,c;
int main()
{
cin>>m>>n>>c;
for(int i = 1;i <= m; ++i) cin>>man[i];
for(int i = 1;i <= n; ++i) cin>>woman[i];
sort(man + 1,man + 1 + m);
sort(woman + 1,woman + 1 + n);
int num1 = 1,num2 = 1,cnt = 0;
while(num1 <= m && num2 <= n)
{
if(man[num1] - woman[num2] > c) num2++;
else if(woman[num2] - man[num1] > c) num1++;
else
{
num1++;
num2++;
cnt++;
}
}
printf("%d\n",cnt);
}