如题。核心代码:
long long a[300005] , b[300005];
void solve()
{
long long n , m;
read(n , m);
readarray(a , 1 , n);
readarray(b , 1 , n);
sort(a + 1 , a + n + 1);
sort(b + 1 , b + n + 1);
long long ans = 0;
for(int i = 1 ; i <= n ; i++)
{
ans += a[i];
ans += b[i];
}
for(int i = 1 , j = n ; i <= n && j >= 1 ; )
{
while(i <= n && a[i] + b[j] < m)
{
i++;
}
if(a[i] + b[j] >= m)
{
ans -= m;
}
i++ , j--;
}
printnl(ans);
}
我的思路就是这样双指针,求 hack。