Cod sursa(job #428512)

Utilizator pdaniel93Popescu Daniel pdaniel93 Data 29 martie 2010 12:21:42
Problema Loto Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
FILE * fin=fopen ("loto.in","r");
FILE * fout=fopen ("loto.out","w");

map <int, int> viz;
vector<int> v;
int n,S,i,j,k,nr,S1,S2,ok,x;

int main()
{
fscanf (fin,"%d %d",&n,&S);
for (i=0; i<n; i++)
{
  fscanf (fin, "%d", &x);
  v.push_back(x);
}
ok=1;
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;
    
for (i=0; i<n&&ok==1; i++)
  for (j=0; j<n&&ok==1; j++)
    for (k=0; k<n&&ok==1; k++)
          if (viz[S-v[i]-v[j]-v[k]] == 1)
            {
            S1=v[i]+v[j]+v[k];
            fprintf (fout, "%d %d %d ", v[i],v[j],v[k]);
            S2=S-v[i]-v[j]-v[k];
            ok=0;
            break;
            }
if (ok==0)
  {
  ok=1;
  for (i=0; i<n&&ok==1; i++)
  for (j=0; j<n&&ok==1; j++)
    for (k=0; k<n&&ok==1; k++)
      if (v[i]+v[j]+v[k] == S2)
          {
          fprintf (fout, "%d %d %d\n", v[i],v[j],v[k]);
          ok=0;
          break;
          }
  }
  else
  fprintf (fout, "-1\n");
fclose(fin);
fclose(fout);
return 0;
}