Cod sursa(job #2939320)

Utilizator rastervcrastervc rastervc Data 13 noiembrie 2022 14:46:05
Problema Oite Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#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;
}