Pagini recente » Cod sursa (job #2500251) | Cod sursa (job #84694) | Cod sursa (job #801298) | Cod sursa (job #832907) | Cod sursa (job #428503)
Cod sursa(job #428503)
#include <stdio.h>
#include <algorithm>
#include <map>
using namespace std;
FILE * fin=fopen ("loto.in", "rt");
FILE * fout=fopen ("loto.out", "wt");
int n, S, s1, s2, v[101], ok1=1, ok2=1;
map <int, int> viz;
void citire ();
void rezolvare ();
void afisare ();
void generare ();
int main ()
{
citire ();
generare ();
rezolvare ();
fclose(fout);
fclose(fin);
return 0;
}
void citire ()
{
int i;
fscanf(fin, "%d %d", &n, &S);
for (i=0; i<n; i++)
fscanf(fin, "%d", &v[i]);
}
void generare ()
{
int i, j, k;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
for (k=0; k<n; k++)
{
viz[v[i]+v[j]+v[k]]=1;
s1=v[i]+v[j]+v[k];
if (viz[S-s1])
{s2=S-s1;ok1=0;ok2=0;}
}
}
void rezolvare ()
{
int i, j, k;
/*for (i=0; i<n; i++)
if (viz[i] && viz[S-i])
{s1=i; s2=S-i;break;}*/
//determinare
if (ok1==1 && ok2==1)
fprintf(fout, "%d\n", -1);
else
{
for (i=0; i<n; i++)
for (j=0; j<n; j++)
for (k=0; k<n; k++)
{
if (v[i]+v[j]+v[k]==s1 && !ok1)
{ok1=1;fprintf(fout, "%d %d %d ", v[i], v[j], v[k]);}
if (v[i]+v[j]+v[k]==s2 && !ok2)
{ok2=1;fprintf(fout, "%d %d %d ", v[i], v[j], v[k]);}
}
fprintf(fout, "\n");
}
}