Pagini recente » Monitorul de evaluare | Cod sursa (job #112098) | Cod sursa (job #2914184) | Cod sursa (job #2939814) | Cod sursa (job #428525)
Cod sursa(job #428525)
#include <stdio.h>
#include <vector>
#include <map>
#define INFILE "loto.in"
#define OUTFILE "loto.out"
using namespace std;
long int n, s;
vector <int> a;
map <int, int> viz;
void citire ();
void det ();
int main ()
{
citire ();
det ();
return 0;
}
void citire ()
{
long int x, i;
FILE * fin=fopen (INFILE, "r");
fscanf (fin, "%ld%ld", &n, &s);
for (i=0; i<n; i++)
{
fscanf (fin, "%ld", &x);
a.push_back(x);
}
fclose (fin);
}
void det ()
{
FILE * fout=fopen (OUTFILE, "w");
long int i, j, k, ok=1, SUMA;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
for (k=0; k<n; k++)
{
viz[a[i]+a[j]+a[k]]=1;
}
for (i=0; i<n&&ok; i++)
for (j=0; j<n&&ok; j++)
for (k=0; k<n; k++)
{
if (viz[s-(a[i]+a[j]+a[k])])
{
fprintf (fout, "%d %d %d ", a[i], a[j], a[k]);
ok=0;
SUMA=s-(a[i]+a[j]+a[k]);
break;
}
}
if (i==n && j==n && k==n)
fprintf (fout, "%d\n", -1);
else
{
ok=1;
for (i=0; i<n&&ok; i++)
for (j=0; j<n&&ok; j++)
for (k=0; k<n; k++)
{
if (a[i]+a[j]+a[k]==SUMA)
{
fprintf (fout, "%d %d %d\n", a[i], a[j], a[k]);
ok=0;
break;
}
}
}
fclose (fout);
}