Pagini recente » Cod sursa (job #1670120) | Cod sursa (job #1241015) | Cod sursa (job #2232726) | Cod sursa (job #1955234) | Cod sursa (job #760201)
Cod sursa(job #760201)
#include <fstream>
#include <algorithm>
using std::ifstream;
using std::ofstream;
void display(ofstream &out, unsigned int *numbers, unsigned int numberOfNumbers, unsigned long sum)
{
for(unsigned int a = 0; a < numberOfNumbers; ++a)
for(unsigned int b = a; b < numberOfNumbers; ++b)
for(unsigned c = b; c < numberOfNumbers; ++c)
if(numbers[a] + numbers[b] + numbers[c] == sum)
{
out << numbers[a] << ' ' << numbers[b] << ' ' << numbers[c];
return;
}
}
int main(void)
{
unsigned long sum;
unsigned long partialSums[171700];
unsigned int numbers[100];
unsigned int numberOfNumbers;
ifstream in("loto.in");
in >> numberOfNumbers >> sum;
for(unsigned int i = 0; i < numberOfNumbers; ++i)
in >> numbers[i];
unsigned int k = 0;
for(unsigned int a = 0; a < numberOfNumbers; ++a)
for(unsigned int b = a; b < numberOfNumbers; ++b)
for(unsigned c = b; c < numberOfNumbers; ++c)
partialSums[k++] = numbers[a] + numbers[b] + numbers[c];
std::sort(partialSums, partialSums + k);
ofstream out("loto.out");
for(unsigned int i = 0; i < k; ++i)
if(std::binary_search(partialSums, partialSums + k, sum - partialSums[i]))
{
display(out, numbers, numberOfNumbers, partialSums[i]);
out << ' ';
display(out, numbers, numberOfNumbers, sum - partialSums[i]);
out.close();
return 0;
}
out << -1;
out.close();
return 0;
}