Mai intai trebuie sa te autentifici.
Cod sursa(job #1307108)
Utilizator | Data | 1 ianuarie 2015 09:19:24 | |
---|---|---|---|
Problema | Loto | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.42 kb |
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
struct Node
{
int n1, n2, n3;
};
int main()
{
int N, S, i, j, k;
ifstream f("loto.in");
f >> N >> S;
int a[N + 1];
for (i = 1; i <= N; i++)
f >> a[i];
f.close();
unordered_map<int, vector<int>> map;
int sum;
vector<int> numbers(3);
for (i = 1; i <= N; i++)
for (j = 1; j <= N; j++)
for (k = 1; k <= N; k++)
{
sum = a[i] + a[j] + a[k];
if (!map[sum].size())
{
numbers[0] = a[i];
numbers[1] = a[j];
numbers[2] = a[k];
map[sum] = numbers;
}
}
bool found = false;
unordered_map<int, vector<int>>::iterator pairIt;
ofstream g("loto.out");
for (i = 1; i <= N; i++)
for (j = i; j <= N; j++)
for (k = j; k <= N; k++)
{
int target = S - a[i] - a[j] - a[k];
pairIt = map.find(target);
if (pairIt != map.end())
{
g << a[i] << " " << a[j] << " " << a[k] << " ";
g << pairIt->second[0] << " " << pairIt->second[1] << " " << pairIt->second[2];
g.close();
return 0;
}
}
g << "-1";
g.close();
return 0;
}