Cod sursa(job #1770194)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 3 octombrie 2016 21:12:27
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<bits/stdc++.h>
#define Cheie 123457
#define maxC 1035
using namespace std;
int v[maxC],c,l,sum,val;
long long posibilitati;
vector<pair<int,int> > h[Cheie+5];
vector<pair<int,int> >::iterator it;
void add(int x)
{
    int y=x%Cheie;
    for(it=h[y].begin();it!=h[y].end();it++)
    {
        if((*it).first==x)
        {
            (*it).second++;
            return;
        }
    }
    h[y].push_back(make_pair(x,1));
}
int find(int x)
{
    int y=x%Cheie;
    for(it=h[y].begin();it!=h[y].end();it++)
    {
        if((*it).first==x)
        {
            return (*it).second;
        }
    }
    return 0;
}
int main()
{
    freopen("oite.in","r",stdin);
    freopen("oite.out","w",stdout);
    scanf("%d%d",&c,&l);
    for(int i=1;i<=c;i++)
    {
        scanf("%d",&v[i]);
    }
    for(int i=1;i<=c;i++)
    {
        for(int j=(i+1);j<=c;j++)
        {
            add(v[i]+v[j]);
        }
    }
    for(int i=1;i<=c;i++)
    {
        for(int j=(i+1);j<=c;j++)
        {
            sum=v[i]+v[j];
            if(sum<=l)
            {
                val=l-sum;
                posibilitati=posibilitati+1LL*find(val);
               // add(sum);
            }
        }
    }
    printf("%lld\n",posibilitati);
    return 0;
}