Pagini recente » Monitorul de evaluare | Statistici Matei Celea (Nagato) | Cod sursa (job #2216440) | Monitorul de evaluare | Cod sursa (job #392346)
Cod sursa(job #392346)
#include <fstream>
#include <ext/hash_map>
using namespace std;
using namespace __gnu_cxx;
#define foreach(V) for(typeof (V).begin() it = (V).begin(); it != (V).end(); ++it)
const int MAX_N = 1034;
ifstream fin ("oite.in");
ofstream fout ("oite.out");
short N;
int L, V[MAX_N], Sol;
hash_map<int, vector <int> > H;
void citire()
{
fin >> N >> L;
for(short i = 1; i <= N; ++i)
fin >> V[i];
sort(V+1, V+N+1);
}
void solve()
{
for(short i = 1; i <= N; ++i)
for(short j = i+1; j <= N; ++j)
{
if(V[i] + V[j] > L) break;
H[V[i] + V[j]].push_back((i << 10) + j);
}
for(short i = 1; i <= N; ++i)
for(short j = i+1; j <= N; ++j)
{
if(V[i] + V[j] > L) break;
if(H.find(L-V[i]-V[j]) == H.end()) continue;
foreach(H[L-V[i]-V[j]])
{
short x = *it >> 10;
if(x > j)
++Sol;
}
}
fout << Sol;
}
int main()
{
citire();
solve();
}