Cod sursa(job #1008666)

Utilizator bebetxxPana Georgiana bebetxx Data 11 octombrie 2013 16:04:49
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.12 kb
#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

std::vector<int>_vNumbers,_vTickets;

//----------------------------------------------------
void citire(int *iSuma)
{
    FILE * fin = fopen("loto.in","r");
    int iN;

    fscanf(fin,"%d %d",&iN,iSuma);
    int iNumber;

    for (int i=0; i<iN; i++)
    {
       fscanf(fin,"%d",&iNumber);
       if (iNumber < *iSuma)
          _vNumbers.push_back(iNumber);
    }

    fclose(fin);
}
//----------------------------------------------------
int main()
{
    int iSuma;
    citire(&iSuma);

    sort(_vNumbers.begin(),_vNumbers.end());
    for (int i=0; i<_vNumbers.size(); i++)
    {
        while ((i<_vNumbers.size())&&(_vNumbers[i]==_vNumbers[i+1]))
            i++;

        _vTickets.push_back(_vNumbers[i]);
    }

    FILE * fout = fopen("loto.out","w");

    int a,b,c,d,e,f,s1,s2,s3,s4,s5,s6;

    for (a=0; a<_vTickets.size(); a++)
        for (b=0; b<_vTickets.size(); b++)
        {
           s2=_vTickets[a]+_vTickets[b];
           if (s2>= iSuma) break;

           for (c=0; c<_vTickets.size(); c++)
           {
              s3=s2+_vTickets[c];
              if (s3 >= iSuma) break;

              for (d=0; d<_vTickets.size(); d++)
              {
                 s4=s3+_vTickets[d];
                 if (s4 >= iSuma) break;

                 for (e=0; e<_vTickets.size(); e++)
                 {
                     s5=s4+_vTickets[e];
                     if (s5 >= iSuma) break;

                     for (f=0; f<_vTickets.size(); f++)
                     {
                         s6=s5+_vTickets[f];

                         if (s6 == iSuma)
                         {
                             fprintf(fout,"%d %d %d %d %d %d",_vTickets[a],_vTickets[b],_vTickets[c],_vTickets[d],_vTickets[e],_vTickets[f]);
                             fclose(fout);

                             return 0;
                         }
                     }


                 }
              }
           }
        }


    fprintf(fout,"-1");
    fclose(fout);

    return 0;
}