Cod sursa(job #1791317)

Utilizator savulescustefanSavulescu Stefan savulescustefan Data 29 octombrie 2016 11:33:52
Problema Oite Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <cstdio>
#include <vector>
using namespace std;
vector <int> v[100017],v1[100017];
int i,j,k,z,x,x1,l,n,a[1028];
long long nr;
int main()
{
    freopen ("oite.in","r",stdin);
    freopen ("oite.out","w",stdout);
    scanf ("%d %d", &n, &l);
    a[0]=-1;
    for (i=1;i<=n;i++)
        scanf ("%d", &a[i]);
    for (i=(n-2);i>=2;i--)
    {
        for (j=(i+2);j<=n;j++)
        {
            x=a[i+1]+a[j];
            if (x<=l)
            {
            x1=x%100013;
            z=v[x1].size();
            for (k=0;k<z;k++)
            {
                if (v[x1][k]==x)
                {
                    v1[x1][k]++;
                    break;
                }
            }
            if (k==z)
            {
                v[x1].push_back(x1);
                v1[x1].push_back(1);
            }
            }
        }
        for (j=1;j<i;j++)
        {
            x=l-a[i]-a[j];
            if (x>=0)
            {
            x1=x%100013;
            z=v[x1].size();
            for (k=0;k<z;k++)
            {
                if (v[x1][k]==x)
                {
                    nr=0LL+nr+v1[x1][k];
                    break;
                }
            }
            }
        }
    }
    printf ("%lld", nr);
    return 0;
}