This commit is contained in:
2026-08-06 23:20:25 +08:00
parent f87523a003
commit 94bdf44889
11 changed files with 426 additions and 50 deletions
+56
View File
@@ -0,0 +1,56 @@
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
constexpr size_t MAX_N = 4005;
long long numbers_amount, numbers[4][MAX_N];
vector<long long> sums[2];
unordered_map<long long, size_t> sum_to_amount[2];
template <typename T>
void log_vector(vector<T> vec, const string& prefix = "") {
clog << prefix;
for (const T& n : vec) {
clog << n << " ";
}
clog << endl;
}
void build_sums(const size_t sums_idx) {
for (int i = 0; i < numbers_amount; i++) {
for (int j = 0; j < numbers_amount; j++) {
long long sum = numbers[sums_idx][i] + numbers[sums_idx + 1][j];
if (!sum_to_amount[sums_idx / 2][sum]++) {
sums[sums_idx / 2].push_back(sum);
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> numbers_amount;
for (int i = 0; i < numbers_amount; i++) {
cin >> numbers[0][i] >> numbers[1][i] >> numbers[2][i] >> numbers[3][i];
}
build_sums(0), build_sums(2);
sort(sums[0].begin(), sums[0].end()), sort(sums[1].begin(), sums[1].end());
// log_vector(sums[0], "sums[0]: ");
// log_vector(sums[1], "sums[1]: ");
unsigned int ans = 0;
for (const long long n : sums[0]) {
auto it = lower_bound(sums[1].begin(), sums[1].end(), -n);
if (it != sums[1].end() && *it == -n) {
ans += sum_to_amount[1][-n] * sum_to_amount[0][n];
}
}
cout << ans << endl;
return 0;
}