fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long N, K, A[1509], B[1509], C[1509], D[1509];
  5. long long X[2250009];
  6.  
  7. int main() {
  8. cin >> N >> K;
  9. for (int i = 1; i <= N; i++) cin >> A[i];
  10. for (int i = 1; i <= N; i++) cin >> B[i];
  11. for (int i = 1; i <= N; i++) cin >> C[i];
  12. for (int i = 1; i <= N; i++) cin >> D[i];
  13.  
  14. // ステップ 1: A[i] + B[j] を X に記録し、小さい順にソートする
  15. for (int i = 1; i <= N; i++) {
  16. for (int j = 1; j <= N; j++) {
  17. X[(i - 1) * N + (j - 1)] = A[i] + B[j];
  18. }
  19. }
  20. sort(X, X + N * N);
  21.  
  22. // ステップ 2: k, l を決め打ちする
  23. long long Answer = 0;
  24. for (int k = 1; k <= N; k++) {
  25. for (int l = 1; l <= N; l++) {
  26. long long border = K - C[k] - D[l];
  27. int pos1 = lower_bound(X, X + N * N, border + 1) - X;
  28. Answer += (long long)pos1;
  29. }
  30. }
  31.  
  32. cout << Answer << endl;
  33. return 0;
  34. }
Success #stdin #stdout 0s 4184KB
stdin
3 22
3 4 6
2 6 7
1 2 7
2 5 9
stdout
68