Cod sursa(job #428474)

Utilizator rusu_raduRusu Radu rusu_radu Data 29 martie 2010 12:01:45
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#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, j, k, S1, S2, S1o=0, S2o=0;
  for (i=1; i<=n; i++)
    for (j=1; j<=n; j++)
      for (k=1; k<=n; k++)
        viz[T[i]+T[j]+T[k]]=1;
  for (i=1; i<=S; i++)
    if (viz[i] && viz[S-i])
    {
      S1=i;
      S2=S-i;
      break;
    }
  if (i==S+1)
    fprintf (fout, "-1");
  else
    for (i=1; i<=n; i++)
      for (j=1; j<=n; j++)
        for (k=1; k<=n; 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);
}