Pagini recente » Cod sursa (job #2792476) | Cod sursa (job #1611528) | Cod sursa (job #773267) | Cod sursa (job #2861551) | Cod sursa (job #392375)
Cod sursa(job #392375)
#include <fstream>
#include <map>
#include <ext/hash_map>
using namespace std;
using namespace __gnu_cxx;
#define foreach(V, x) for(typeof (V).equal_range(x) 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;
multimap<int, short> 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.insert(pair<int, short> (V[i] + V[j], i));
}
for(short i = 1; i <= N; ++i)
for(short j = i+1; j <= N; ++j)
{
if(V[i] + V[j] > L) break;
pair<multimap <int, short>::iterator, multimap <int, short>::iterator> ret = H.equal_range(L-V[i]-V[j]);
multimap <int, short> :: iterator it;
for(it = ret.first; it != ret.second; ++it)
if(it->second > j)
++Sol;
}
fout << Sol;
}
int main()
{
citire();
solve();
}