Cod sursa(job #1581909)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 27 ianuarie 2016 12:37:51
Problema Oite Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <vector>
#define CMAX 2955
#define MOD 666013
using namespace std;
vector<long long>h[MOD];
long long c,l;
long long v[CMAX];
void addtohash(long long x)
{
    h[x%MOD].push_back(x);
}
long long findit(long long x)
{
    long long ct=0;
    long long key=(l-x)%MOD;
    vector<long long>::iterator it;
    for(it=h[key].begin();it!=h[key].end();++it)
    {
        if(*it==l-x) ++ct;
    }
    return ct;
}
int main()
{
    freopen ("oite.in","r",stdin);
    freopen ("oite.out","w",stdout);
    scanf("%lld%lld",&c,&l);
    long long ct=0;
    for(int i=1;i<=c;i++)
    {
        scanf("%lld",&v[i]);
    }
    for(int i=1;i<c;i++)
    {
        for(int j=i+1;j<=c;j++)
        {
            ct+=findit(v[i]+v[j]);
        }
        for(int j=1;j<i;j++)
        {
            addtohash(v[i]+v[j]);
        }
    }
    printf("%lld\n",ct);
}