Pagini recente » Cod sursa (job #2506315) | Borderou de evaluare (job #996890) | Cod sursa (job #1178801) | Cod sursa (job #2194308) | Cod sursa (job #2939320)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <algorithm>
using namespace std;
constexpr size_t LIM = 1030;
unordered_map<int, int> freq;
int N, S, i, j, arr[LIM];
long long ans;
static inline void read() {
ifstream fin("oite.in");
fin.tie(nullptr);
fin >> N >> S;
for (i = 0; i < N; i++)
fin >> arr[i];
fin.close();
}
static inline void write() {
ofstream fout("oite.out");
fout.tie(nullptr);
fout << ans;
fout.close();
}
static inline void solve() {
sort(arr, arr + N);
for (i = 1; i < N - 2; i++) {
for (j = 0; j < i; j++) {
freq[arr[i] + arr[j]]++;
if (arr[i] + arr[j] > S) break;
}
for (j = i + 2; j < N; j++) {
if (freq.find(S - arr[i + 1] - arr[j]) != freq.end())
ans += freq[S - arr[i + 1] - arr[j]];
if (arr[i + 1] + arr[j] > S) break;
}
}
}
int main() {
ios_base::sync_with_stdio(false);
read();
solve();
write();
return 0;
}