Cod sursa(job #2429916)

Utilizator IulianOleniucIulian Oleniuc IulianOleniuc Data 11 iunie 2019 20:42:08
Problema Oite Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <vector>
#include <fstream>
#include <unordered_map>

using std::vector;
using std::unordered_map;

std::ifstream fin("oite.in");
std::ofstream fout("oite.out");

int main() {
    int n, s;
    fin >> n >> s;

    vector<int> v(n + 1);
    for (int i = 1; i <= n; i++)
        fin >> v[i];

    vector<unordered_map<int, int>> sums(n + 1);
    for (int i = 1; i < n; i++)
        for (int j = i + 1; j <= n; j++) {
            sums[0][v[i] + v[j]]++;
            sums[i][v[i] + v[j]]++;
            sums[j][v[i] + v[j]]++;
        }

    int64_t sol = 0;
    for (int i = 1; i < n; i++)
        for (int j = i + 1; j <= n; j++) {
            int sum = v[i] + v[j];
            sol += sums[0][s - sum] - sums[i][s - sum] - sums[j][s - sum] + (sum == s - sum);
        }
    fout << sol / 6 << '\n';

    fout.close();
    return 0;
}