H
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
bool cmp1(const int &a, const int &b)
{
return a < b;
}
bool cmp2(const int &a, const int &b)
{
return b < a;
}
int d1[1000], d2[1000];
int main()
{
int n, d, r;
while (cin>>n>>d>>r && n)
{
int res = 0;
for (int i = 0;i < n;i++)
cin>>d1[i];
for (int i = 0;i < n;i++)
cin>>d2[i];
sort(d1, d1 + n, cmp1);
sort(d2, d2 + n, cmp2);
for (int i = 0;i < n;i++)
{
if (d1[i] + d2[i] > d)
res += (d2[i] + d1[i] - d);
}
cout << res * r << endl;
}
}
。。。。好像是水题,,只需要对早晚任务排序,一个组中选最大,另一个组中选最小的搭配就完事了。。。。