解题思路
t=b[i]-a[i],要求t的最小值,应尽可能缩小数组a与数组b之间的差距,所以将排序后的数组a前x个元素中小于y的值替换为y
1.获取输入n,x,y,a[],b[]
2.对数组a、b进行排序
3.将数组a前x个元素中小于y的值替换为y
4.对数组a重新排序
5.t为b[i]-a[i]的最大值
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,x,y;
//分别获取n,x,y
cin>>n>>x>>y;
int a[n];
int b[n];
int t=0;
//获取数组a、数组b
for (int i = 0; i < n; ++i)
{
cin>>a[i];
}
for (int i = 0; i < n; ++i)
{
cin>>b[i];
}
//将数组a、b进行排序
sort(a,a+n);
sort(b,b+n);
//将数组a前x个元素中小于y的值替换为y
for (int i = 0; i < x; ++i)
{
if (a[i]<y)
{
a[i]=y;
}
}
//数组a重新排序
sort(a,a+n);
//求b[i]-a[i]的最大值即为t
for (int i = 0; i < n; ++i)
{
if (b[i]-a[i]>t)
{
t=b[i]-a[i];
}
}
cout<<t<<endl;
return 0;
} 


京公网安备 11010502036488号