Pagini recente » Cod sursa (job #2241502) | Cod sursa (job #2459352) | Cod sursa (job #299895) | Cod sursa (job #3142199) | Cod sursa (job #2977340)
#include <fstream>
#define mod 999999
#include <vector>
#include <algorithm>
#include <utility>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
int v[1025];
vector<pair<int, int>> l[mod];
vector <pair<int, int>>::iterator it;
int main()
{
int n, s, i, j;
fin>>n>>s;
for(i=1;i<=n;i++)
{
fin>>v[i];
}
sort(v+1, v+n+1);
int sol=0;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(s-v[i]-v[j]<0)
{
continue;
}
else
{
int ok=0;
int sum=s-v[i]-v[j];
int index=sum%mod;
for(it=l[index].begin();it!=l[index].end();it++)
{
if(it->first==sum)
{
ok=1;
break;
}
}
if(ok==0)
{
it=l[index].end();
}
if(it!=l[index].end())
{
sol+=it->second;
}
}
}
for(j=1;j<i;j++)
{
int ok=0;
int sum=v[i]+v[j];
int index=sum%mod;
for(it=l[index].begin();it!=l[index].end();it++)
{
if(it->first==sum)
{
ok=1;
break;
}
}
if(ok==0)
{
it=l[index].end();
}
if(it!=l[index].end())
{
it->second++;
}
else
{
l[index].push_back({sum, 1});
}
}
}
fout<<sol;
return 0;
}