Cod sursa(job #2546448)

Utilizator alexilasiAlex Ilasi alexilasi Data 14 februarie 2020 10:37:49
Problema Oite Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 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 = 1000037;

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

void add(int val)
{
    if(val > l) return;
    for(int i=0; i<has[val%key].size(); i++)
        if(has[val%key][i].f == val)
        {
            has[val%key][i].s ++;
            return;
        }
    has[val%key].push_back(mp(val, 1));
}

int cati(int val)
{
    if(val < 0) return 0;
    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;
}