Pagini recente » Cod sursa (job #495562) | Cod sursa (job #205671) | Cod sursa (job #398427) | Cod sursa (job #1902687) | Cod sursa (job #1880416)
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
#include <iterator>
#include <algorithm>
using namespace std;
unsigned int sum;
unsigned int numberOfElements;
vector<unsigned int> elements;
void ReadInput()
{
ifstream inputStream("oite.in");
inputStream>> numberOfElements>> sum;
copy_n(istream_iterator<unsigned int>(inputStream), numberOfElements, back_inserter(elements));
inputStream.close();
}
unsigned int Solve()
{
unordered_map<unsigned int , unsigned int> auxSum;
unsigned int result = 0;
for( unsigned int i = 0; i < numberOfElements - 1 && elements[i] <= sum; ++i )
{
for( unsigned int j = i + 1; j < numberOfElements && elements[i] + elements[j] <= sum; ++j )
result += auxSum[ sum - elements[i] - elements[j]];
for( unsigned int j = 0; j < i; ++j )
++auxSum[elements[i] + elements[j]];
}
return result;
}
void DisplayResult(unsigned int result)
{
ofstream outputStream("oite.out");
outputStream<< result;
outputStream.close();
}
int main()
{
ReadInput();
sort(elements.begin(), elements.end());
unsigned int result = Solve();
DisplayResult(result);
return 0;
}