Cod sursa(job #1497650)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 7 octombrie 2015 02:15:34
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <vector>

#define MOD 6007
#define NMAX 2037
#define LL long long

using namespace std;
int n, sum, v[NMAX], tmp, sze, tmp2;
LL ans;
vector <int> dsp[MOD];

int main()
{
    freopen("oite.in", "r", stdin);
    freopen("oite.out", "w", stdout);
    scanf("%d %d", &n, &sum);
    for(int i = 1; i<= n; ++i) scanf("%d", &v[i]);
    for(int i = 1; i< n; ++i)
    {
        for(int j = i+1; j<= n; ++j)
        {
            tmp = sum - v[i] - v[j];
            if(tmp > 0)
            {
                tmp2 = tmp%MOD;
                sze = dsp[tmp2].size();
                for(int k = 0; k< sze; ++k)
                {
                    if(dsp[tmp2][k] == tmp) ans++;
                }
            }
        }
        for(int j = 1; j< i; ++j) dsp[(v[i]+v[j]) % MOD].push_back(v[i]+v[j]);
    }
    printf("%lld\n", ans);
    return 0;
}