Cod sursa(job #3276478)

Utilizator tudor_costinCostin Tudor tudor_costin Data 13 februarie 2025 19:03:33
Problema Oite Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")
#include <bits/stdc++.h>

using namespace std;
#define ll long long
ifstream fin("oite.in");
ofstream fout("oite.out");
const int Nmax=1050;
int a[Nmax];
unordered_map<int,int> f;
unordered_map<int,int> tot;
signed main()
{
    int n,L;
    fin>>n>>L;
    for(int i=1;i<=n;i++) fin>>a[i];
    for(int i=1;i<=n;i++)
    {
        f[a[i]]++;
        for(int j=1;j<i;j++)
        {
            tot[a[i]+a[j]]++;
        }
    }
    ll ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<i;j++)
        {
            int sum=a[i]+a[j];
            int need=L-sum;
            int need2=need-a[i];
            int need3=need-a[j];
            ll cnt=tot[need]-f[need3]-f[need2];
            ///cout<<sum<<' '<<need<<' '<<cnt<<' '<<i<<' '<<j<<'\n';
            if(a[i]+a[j]==need) cnt++;
            if(need2==a[i]) cnt++;
            if(need3==a[j]) cnt++;
            ans+=1LL*cnt;
        }
    }
    fout<<ans/6<<'\n';
    return 0;
}