Pagini recente » Cod sursa (job #1025388) | Cod sursa (job #1040574)
#include<fstream>
#include<vector>
#define MOD 666013
#define MAXN 1024+100
using namespace std;
int a[MAXN][MAXN],l,n,t[MAXN];
long long sol;
vector<pair<short,short> > v[MOD+1];
ifstream fin("oite.in");
ofstream fout("oite.out");
void citire()
{
fin>>n>>l;
for(int i=1;i<=n;i++)
{
fin>>t[i];
}
}
/*void sume()
{
int s;
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
s=t[i]+t[j];
v[s%MOD].push_back(make_pair(i,j));
a[i][j]=s;
a[j][i]=s;
}
}
}
*/
void rezolva()
{
pair<int, int> p;
int s;
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
s=l-t[i]-t[j];
if(s>0){
int ll=s%MOD;
for(int k=0;k<v[ll].size();k++)
{
if(v[ll][k].first==s)
{
sol+=v[ll][k].second;
break;
}
}
}
}
for(int j=1;j<i;j++)
{
s=t[i]+t[j];
int ll=s%MOD;
int ok=0;
for(int k=0;k<v[ll].size();k++)
if(v[ll][k].first==s){
v[ll][k].second++;
ok=1;
}
if(ok==0)
v[ll].push_back(make_pair(s,1));
}
}
}
int main()
{
citire();
// sume();
rezolva();
fout<<sol;
return 0;
}