Cod sursa(job #2823114)

Utilizator vlad2009Vlad Tutunaru vlad2009 Data 26 decembrie 2021 23:36:24
Problema Oite Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <algorithm>
#include <unordered_map>

const int MAX_N = (1 << 10);
int a[1 + MAX_N];
std::unordered_map<int, int> mp;

int main() {
  std::ifstream fin("oite.in");
  std::ofstream fout("oite.out");
  int n, l;
  fin >> n >> l;
  for (int i = 1; i <= n; i++) {
    fin >> a[i];
  }
  std::sort(a + 1, a + n + 1);
  long long answer = 0;
  for (int i = 1; i < n; i++) {
    for (int j = i + 1; j <= n && l - a[i] - a[j] >= 0; j++) {
      if (mp.find(l - a[i] - a[j]) != mp.end()) {
        answer += mp[l - a[i] - a[j]];
      }
    }
    for (int j = 1; j < i; j++) {
      mp[a[i] + a[j]]++;
    }
  }
  fout << answer;
  return 0;
}