Cod sursa(job #1786579)

Utilizator ZeBuGgErCasapu Andreas ZeBuGgEr Data 23 octombrie 2016 12:37:46
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.28 kb
#include<cstdio>
#include<iostream>

using namespace std;

int v[1100];
long long int h[530000],l;
int co[530000];
int res;
int c;

int main()
{
    freopen("oite.in","r",stdin);
    freopen("oite.out","w",stdout);

    scanf("%d %lld",&c,&l);

    for(int i=1;i<=c;i++)
    {
        scanf("%d",&v[i]);
    }

    for(int i=3;i<c;i++)
    {
        for(int j=1;j<i-1;j++)
        {
            long long int p=v[i-1]+v[j];
            int to=p%527017;
            bool flag=0;
            for(int k=to;k<527017;k++)
            {
                if(h[k]==0)
                {
                    h[k]=p;
                    co[k]++;
                    flag=1;
                    break;
                }
                else if(h[k]==p)
                {
                    co[k]++;
                    flag=1;
                    break;
                }
            }
            if(flag==0)
            {
                for(int k=0;k<to;k++)
                {
                    if(h[k]==0)
                    {
                        h[k]=p;
                        co[k]++;
                        break;
                    }
                    else if(h[k]==p)
                    {
                        co[k]++;
                        break;
                    }
                }
            }
        }
        for(int j=i+1;j<=c;j++)
        {
            long long int p=l-v[i]-v[j];
            int to=p%527017;
            bool flag=0;
            for(int k=to;k<527017;k++)
            {
                if(h[k]==0)
                {
                    flag=1;
                    break;
                }
                else if(h[k]==p)
                {
                    res+=co[k];
                    flag=1;
                    break;
                }
            }
            if(flag==0)
            {
                for(int k=0;k<to;k++)
                {
                    if(h[k]==0)
                    {
                        break;
                    }
                    else if(h[k]==p)
                    {
                        res+=co[k];
                        break;
                    }
                }
            }
        }
    }
    printf("%d\n\n",res);
}