解题思路
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; }