Cod sursa(job #1663194)

Utilizator gbibBacotiu Gabi gbib Data 25 martie 2016 17:05:04
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in ("oite.in");
ofstream out("oite.out");
const int pat =4999;
vector <pair <int ,int> > H[pat+1];
int query(int x)
{
    int k=x%pat;
    int i;
    for(i=0;i<H[k].size();i++)
    {
        if(H[k][i].first==x)
            return H[k][i].second;
    }
    return 0;
}
void add(int x)
{
    int k=x%pat;
    int i;
    for(i=0;i<H[k].size();i++)
    {
        if(H[k][i].first==x)
        {
            H[k][i].second++;
            return;
        }
    }
    H[k].push_back(make_pair(x,1));
    return;
}
int a[1026];
int main()
{long long i,j,l,n,sol=0;
in>>n>>l;
for(i=1;i<=n;i++)
    in>>a[i];
for(i=1;i<=n;i++)
{
    for(j=i+1;j<=n;j++)
        if(l-a[i]-a[j]>0)
        {
            sol+=query(l-a[i]-a[j]);
        }
    for(j=1;j<i;j++)
    {
        add(a[i]+a[j]);
    }
}
out<<sol<<'\n';
    return 0;
}