fork(1) download
  1. def max_abs_sum_gain(a1, b1, a2, b2):
  2. orig = abs(a1 - b1) + abs(a2 - b2)
  3. values = [a1, b1, a2, b2]
  4. max_new = 0
  5. for x1 in values:
  6. for x2 in values:
  7. if x1 == x2:
  8. continue
  9. remaining = values[:]
  10. remaining.remove(x1)
  11. remaining.remove(x2)
  12. y1, y2 = remaining
  13. new_v = abs(x1 - y1) + abs(x2 - y2)
  14. max_new = max(max_new, new_v)
  15. return max_new - orig
  16.  
  17. def solve():
  18. import sys
  19. input = sys.stdin.read
  20. data = input().split()
  21.  
  22. idx = 0
  23. t = int(data[idx])
  24. idx += 1
  25. results = []
  26. for _ in range(t):
  27. n = int(data[idx])
  28. idx += 1
  29. k = int(data[idx])
  30. idx += 1
  31. a = list(map(int, data[idx:idx + n]))
  32. idx += n
  33. b = list(map(int, data[idx:idx + n]))
  34. idx += n
  35.  
  36. initial_v = sum(abs(a[i] - b[i]) for i in range(n))
  37. gains = []
  38.  
  39. for i in range(n - 1):
  40. gain = max_abs_sum_gain(a[i], b[i], a[i + 1], b[i + 1])
  41. if gain > 0:
  42. gains.append(gain)
  43.  
  44. gains.sort(reverse=True)
  45. final_v = initial_v + sum(gains[:k])
  46. results.append(str(final_v))
  47.  
  48. print("\n".join(results))
  49.  
  50. solve()
  51.  
Success #stdin #stdout 0.1s 13956KB
stdin
5
2 1
1 7
3 5
3 2
1 5 3
6 2 4
5 4
1 16 10 10 16
3 2 2 15 15
4 1
23 1 18 4
19 2 10 3
10 10
4 3 2 100 4 1 2 4 5 5
1 200 4 5 6 1 10 2 3 4
stdout
8
9
30
48
322