Cod sursa(job #2546433)

Utilizator alexilasiAlex Ilasi alexilasi Data 14 februarie 2020 10:26:41
Problema Oite Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

#define pii pair <int, int>
#define f first
#define s second
#define mp make_pair

using namespace std;

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

const int key = 666013;

int n, l, i, j, ans;
vector <int> v(1030);
vector <pii> has[key + 10];

void add(int val)
{
    for(auto it : has[val%key])
        if(it.f == val)
        {
            it.s++;
            return;
        }
    has[val%key].push_back(mp(val, 1));
}

int cati(int val)
{
    for(auto it : has[val%key])
        if(it.f == val) return it.s;
    return 0;
}

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

    for(i=1; i<=n; i++)
    {
        for(j=i+1; j<=n; j++)
            ans += cati(l - v[i] - v[j]);
        for(j=1; j<i; j++)
            add(v[i] + v[j]);
    }

    fout << ans;
    return 0;
}