Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/neagubianca | Istoria paginii utilizator/silviucosmin | Istoria paginii utilizator/florinrm | Cod sursa (job #392389)
Cod sursa(job #392389)
#include <fstream>
#include <ext/hash_map>
using namespace std;
using namespace __gnu_cxx;
const int MAX_N = 1034;
ifstream fin ("oite.in");
ofstream fout ("oite.out");
short N;
int L, V[MAX_N], Sol;
hash_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;
if(H.find(L-V[i]-V[j]) == H.end()) continue;
pair<hash_multimap <int, short>::iterator, hash_multimap <int, short>::iterator> ret = H.equal_range(L-V[i]-V[j]);
hash_multimap <int, short> :: iterator it;
for(it = ret.first; it != ret.second; ++it)
if(it->second > j)
++Sol;
}
fout << Sol;
}
int main()
{
citire();
solve();
}