Pagini recente » Cod sursa (job #2328779) | Cod sursa (job #2832504) | Cod sursa (job #2178997) | Cod sursa (job #164907) | Cod sursa (job #1663205)
#include <bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
const int modulo=4999;
vector <pair <int ,int> > H[modulo+1];
int n,i,j,k;
int 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;
}