Pagini recente » Cod sursa (job #2618044) | Cod sursa (job #1965626) | Cod sursa (job #1264264) | Cod sursa (job #32070) | Cod sursa (job #1038072)
#include <iostream>
#include <fstream>
#include <tr1/unordered_map>
using namespace std;
tr1 :: unordered_map < int , int > M;
int lana[1025];
int N,L;
int main()
{
ifstream in("oite.in");
ofstream out("oite.out");
in>>N>>L;
int i,j,k,ans=0;
for(i=1;i<=N;i++)
{
in>>lana[i];
}
for(i=1;i<=N;i++)
{
for(j=i+1;j<=N;j++)
if(M.count(L-lana[i]-lana[j]))
ans+=M[L-lana[i]-lana[j]];
for(k=1;k<i;k++)
M[lana[i]+lana[k]]++;
}
out<<ans;
return 0;
}
/*
#include <iostream>
#include <fstream>
using namespace std;
int lana[1025];
int N,L;
int main()
{
ifstream in("oite.in");
ofstream out("oite.out");
in>>N>>L;
int i,j,ans=0;
for(i=1;i<=N;i++)
in>>lana[i];
for(i=1;i<N-2;i++)
for(j=i+1;j<N-1;j++)
for(int ii=j+1;ii<N;ii++)
for(int jj=ii+1;jj<=N;jj++)
if(lana[i]+lana[j]+lana[ii]+lana[jj]==L)
ans++;
cout<<ans;
return 0;
}
*/
/*
for (i = 1; i <= N; i ++)
{
for (j = i + 1; j <= N; j ++)
{
now = S - V[i] - V[j];
if (now < 0)
continue;
x = now % MOD;
if (Hash[x].size ())
for (k = 0; k < Hash[x].size (); ++ k)
if (now == Hash[x][k])
Ans ++;
}
for (j = 1; j < i; j ++)
Hash[ (V[i] + V[j]) % MOD ].push_back (V[i] + V[j]);
}*/