Pagini recente » Cod sursa (job #1252002) | Cod sursa (job #2849147) | Cod sursa (job #1504228) | Cod sursa (job #1278449) | Cod sursa (job #2665866)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("oite.in");
ofstream g ("oite.out");
const long long MOD=666013;
long long n , s;
long long cont=0;
int a[700050];
struct val{
long long suma;
long long a;
long long b;
};
vector <val> v[MOD+5];
void citire()
{
f>>n>>s;
for(long long i=1;i<=n;++i)
f>>a[i];
}
long long cauta(long long x , long long k , long long t)
{
long long nr=0;
long long r=x%MOD;
for(long long 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(long long i=1;i<=n;++i)
{
for(long long j=i+1;j<=n;++j)
{
long long sum=a[i]+a[j];
v[sum%MOD].push_back( {sum , i , j});
}
}
for(long long i=1;i<=n;++i)
{
for(long long j=i+1;j<=n;++j)
{
long long sum=a[i]+a[j];
if(cauta(s-sum , i , j)>0)
cont+=cauta(s-sum , i , j);
}
}
g<<cont/6;
}
int main()
{
citire();
rezolvare();
return 0;
}