Pagini recente » Cod sursa (job #401) | Cod sursa (job #1750941) | Cod sursa (job #1056450) | Cod sursa (job #734115) | Cod sursa (job #2774350)
#include <fstream>
#include <unordered_map>
#include <string>
#include <algorithm>
#define NMAX 105
using namespace std;
/***********************************/
/// INPUT / OUTPUT
ifstream f("loto.in");
ofstream g("loto.out");
/***********************************/
/// GLOBAL DECALARATIONS
int N, S;
int numbers[NMAX];
unordered_map < int, string > mapa;
/***********************************/
/// FUNCTIONS
void ReadInput();
void Solution();
void Output();
/***********************************/
///-------------------------------------------
inline void ReadInput()
{
f >> N >> S;
for (int i = 1 ; i <= N ; ++ i)
f >> numbers[i];
}
///-------------------------------------------
string GetStr(int i, int j, int k)
{
return to_string(i) + "_" + to_string(j) + "_" + to_string(k);
}
///-------------------------------------------
inline void Solution()
{
for (int i = 1 ; i <= N ; ++ i)
{
for (int j = 1 ; j <= N ; ++ j)
{
for (int k = 1 ; k <= N ; ++ k)
{
mapa[numbers[i] + numbers[j] + numbers[k]] = GetStr(i, j, k);
}
}
}
for (int i = 1 ; i <= N ; ++ i)
{
for (int j = 1 ; j <= N ; ++ j)
{
for (int k = 1 ; k <= N ; ++ k)
{
if (mapa.find(S - numbers[i] - numbers[j] - numbers[k]) != mapa.end())
{
string str = mapa[S - numbers[i] - numbers[j] - numbers[k]];
int indices[3];
int num = 0, ct = 0;
for (int idx = 0 ; idx < str.length() ; ++ idx)
{
if (str[idx] == '_')
{
indices[ct] = num;
ct ++;
num = 0;
}
else
{
num *= 10;
num += (str[idx] - '0');
}
}
int ii = indices[0], jj = indices[1], kk = num;
int arr[] = {numbers[i], numbers[j], numbers[k],
numbers[ii], numbers[jj], numbers[kk]};
sort(arr, arr + 6);
for (int i = 0 ; i < 6 ; ++ i)
g << arr[i] << " ";
return;
}
}
}
}
g << "-1";
}
///-------------------------------------------
inline void Output()
{
}
///-------------------------------------------
int main()
{
ReadInput();
Solution();
Output();
return 0;
}