Pagini recente » Cod sursa (job #2967065) | Cod sursa (job #2300634) | Cod sursa (job #2124344) | Cod sursa (job #2337418) | Cod sursa (job #2666057)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("oite.in");
ofstream g ("oite.out");
const int MOD=666013;
int n, s;
int cont=0;
int a[700050];
struct val
{
int suma;
int a;
int b;
};
vector <val> v[MOD+5];
void citire()
{
f>>n>>s;
for(int i=1; i<=n; ++i)
f>>a[i];
}
int cauta(int x, int k, int t)
{
int nr=0;
int r=x%MOD;
for(int i=0; i<v[r].size(); ++i)
{
if(x==v[r][i].suma && k!=v[r][i].a && t!=v[r][i].b && t!=v[r][i].a && k!=v[r][i].b)
++nr;
}
return nr;
}
void rezolvare()
{
for(int i=1; i<=n; ++i)
{
for(int j=i+1; j<=n; ++j)
{
int sum=a[i]+a[j];
v[sum%MOD].push_back( {sum, i, j});
}
}
for(int i=1; i<=n; ++i)
{
for(int j=i+1; j<=n; ++j)
{
int sum=a[i]+a[j];
if(s>sum && !v[(s-sum)%MOD].empty() )
{
int cop= cauta(s-sum, i, j);
if(cop>0)
cont+=cop;
}
}
}
g<<cont/6;
}
int main()
{
citire();
rezolvare();
return 0;
}