Pagini recente » Cod sursa (job #1914051) | Cod sursa (job #218191) | Clasament tema_grf1 | Cod sursa (job #1411164) | Cod sursa (job #2546612)
#include <bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
map <int,int> m;
int mod=666013;
vector <pair<int,int > > a[666020];
int i,j,n,sum[2000000],q,val,v[2000005],sol,poz,copie;
int nr (int val)
{
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;
}
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;
}
}
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;
}