Pagini recente » Cod sursa (job #754870) | Cod sursa (job #218452) | Cod sursa (job #1205889) | Cod sursa (job #2932906) | Cod sursa (job #2546617)
#include <bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
map <int,int> m;
int mod=100007;
vector <pair<int,int > > a[666020];
int i,j,n,sum[2000000],q,val,v[2000005],sol,poz,copie;
int nr (int val)
{
if (val<0)
{
return 0;
}
int numar=0,i;
poz=val%mod;
for (i=0;i<(int)a[poz].size();i++)
{
if (a[poz][i].first==val)
{
numar+=a[poz][i].second;
return numar;
}
}
return 0;
}
void add (int val)
{
if (val>copie)
{
return;
}
int i,ok=0;
poz=val%mod;
for (i=0;i<(int)a[poz].size();i++)
{
if (a[poz][i].first==val)
{
a[poz][i].second++;
ok=1;
break;
}
}
if (ok==0)
{
a[poz].push_back({val,1});
}
}
int main()
{
f>>n>>val;
copie=val;
for (i=1;i<=n;i++)
{
f>>v[i];
}
for (i=1;i<=n;i++)
{
for (j=i+1;j<=n;j++)
{
sol=sol+nr(val-v[i]-v[j]);
}
for (j=1;j<i;j++)
{
add(v[i]+v[j]);
}
}
g<<sol;
return 0;
}