Cod sursa(job #2580599)

Utilizator Senth30Denis-Florin Cringanu Senth30 Data 13 martie 2020 19:43:28
Problema Oite Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb

#include <bits/stdc++.h>

using namespace std;
const int NMAX = 1030;

int N, L, M;
int v[NMAX];
long long ans;
unordered_map <int, vector <pair <int, int> > > hmap;

void read(){
    scanf("%d%lld", &N, &L);
    for(int i = 1; i <= N; i++)
        scanf("%d", &v[i]);
}

int main(){

    freopen("oite.in", "r", stdin);
    freopen("oite.out", "w", stdout);

    read();

    for(int i = 1; i <= N; i++)
        for(int j = i + 1; j <= N; j++)
            hmap[v[i] + v[j]].push_back(make_pair(i, j));
    for(int i = 1; i <= N; i++)
        for(int j = i + 1; j <= N; j++){
            int sum = v[i] + v[j];
            if(hmap[L - sum].size()){
                pair <int, int> x;
                for(int k = 0; k < hmap[L - sum].size(); k++){
                    x = hmap[L - sum][k];
                    if(x.first != i && x.first != j && x.second != i && x.second != j)
                        ans++;
                }
            }
        }
    printf("%lld", ans / 6);

    return 0;
}