Pagini recente » Cod sursa (job #186338) | Cod sursa (job #181604) | Cod sursa (job #433905) | Cod sursa (job #3233736) | Cod sursa (job #428483)
Cod sursa(job #428483)
#include <stdio.h>
#include <map>
#define Nmax 105
#define InFile "loto.in"
#define OutFile "loto.out"
using namespace std;
int n, S, T[Nmax];
map <int, char> viz;
void citire();
void determinare();
int main()
{
citire();
determinare();
return 0;
}
void citire()
{
int i;
FILE *fin=fopen (InFile, "r");
fscanf (fin, "%d %d\n", &n, &S);
for (i=1; i<=n; i++)
fscanf (fin, "%d ", &T[i]);
}
void determinare()
{
FILE *fout=fopen (OutFile, "w");
int i, sol=0, j=n+1, k=n+1, S1, S2, S1o=0, S2o=0;
for (i=1; i<=n && j==n+1; i++)
for (j=1; j<=n && k==n+1; j++)
for (k=1; k<=n; k++)
{
viz[T[i]+T[j]+T[k]]=1;
S1=T[i]+T[j]+T[k];
if (viz[S-S1])
{
S2=S-S1;
sol=1;
break;
}
}
/*for (i=1; i<=S; i++)
if (viz[i] && viz[S-i])
{
S1=i;
S2=S-i;
break;
}*/
if (!sol)
fprintf (fout, "-1");
else
for (i=1; i<=n && (S1o!=1||S2o!=1); i++)
for (j=1; j<=n && (S1o!=1||S2o!=1); j++)
for (k=1; k<=n && (S1o!=1||S2o!=1); k++)
{
if (T[i]+T[j]+T[k]==S1 && !S1o)
{
fprintf (fout, "%d %d %d ", T[i], T[j], T[k]);
S1o=1;
}
if (T[i]+T[j]+T[k]==S2 && !S2o)
{
fprintf (fout, "%d %d %d ", T[i], T[j], T[k]);
S2o=1;
}
}
fprintf (fout, "\n");
fclose (fout);
}