Pagini recente » Cod sursa (job #2985564) | Cod sursa (job #1747112) | Cod sursa (job #2968631) | Cod sursa (job #2721946) | Cod sursa (job #1663200)
#include <bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
const int modulo=4999;
vector <pair <long long ,int> > H[modulo];
int n,i,j,k;
long long a[1025],suma,sol;
int query (int sum)
{
int r,k,siz;
r=sum%modulo;
siz=H[r].size();
for (k=0;k<siz;k++)
if (H[r][k].first==sum)
return H[r][k].second;
return 0;
}
void add (int sum)
{
int r,k,siz;
r=sum%modulo;
siz=H[r].size();
for (k=0;k<siz;k++)
if (H[r][k].first==sum)
{
H[r][k].second++;
return;
}
H[r].push_back(make_pair(sum,1));
}
int main()
{
f>>n>>suma;
for (i=1;i<=n;i++)
f>>a[i];
for (i=1;i<n;i++)
{
for (j=i+1;j<=n;j++)
sol+=query(suma-a[i]-a[j]);
for (j=1;j<i;j++)
add(a[i]+a[j]);
}
g<<sol;
return 0;
}