Cod sursa(job #809532)

Utilizator cnnonNeagu Cristian cnnon Data 8 noiembrie 2012 17:20:43
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.07 kb
#include <fstream>
#include <stdlib.h>
using namespace std;
int n;
long int s, v[101],nr=0;
struct loto {int poz;long int sum;} a[1000001];

void sortare ()
{
    int p, k;
    k=1;
    while (k)
    {k=0;
    for (int i=1;i<n;++i)
    if (v[i]>v[i+1])
    {
        p=v[i+1];
        v[i+1]=v[i];
        v[i]=p;
        k=1;
    }
    }
    return;
}

void citire ()
{
    ifstream d("loto.in");
    d>>n>>s;
    for (int i=1;i<=n;++i)
    d>>v[i];
    d.close();
}




void generare()
{
    sortare();
    int i , j , k;
    for(i=1;i<=n;++i)
        for(j=i;j<=n;j++)
            for(k=j;k<=n;k++)
            {   nr++;
                a[nr].sum=v[i]+v[j]+v[k];
                a[nr].poz=i*100+j*10+k;
            }


}


void parc()
{
    ofstream g("loto.out");
    int j,i,aux[7];

    for(i=1;i<=nr;++i)
        for(j=i;j<=nr;j++)             //aplicam cautare binara !!
        {
            if(a[i].sum+a[j].sum==s)
            {
                aux[1]=v[a[i].poz%10]; a[i].poz/=10;
                aux[2]=v[a[i].poz%10]; a[i].poz/=10;
                aux[3]=v[a[i].poz%10]; a[i].poz/=10;
                aux[4]=v[a[j].poz%10]; a[j].poz/=10;
                aux[5]=v[a[j].poz%10]; a[j].poz/=10;
                aux[6]=v[a[j].poz%10]; a[j].poz/=10;
                int p, k,l;
                k=1;
                while (k)
                {k=0;
                 for (int l=1;l<6;++l)
                  if (aux[l]>aux[l+1])
                     {
                      p=aux[l+1];
                      aux[l+1]=aux[l];
                      aux[l]=p;
                      k=1;
                      }
                 }
                long int s2=0;
                for(l=1;l<=6;++l)
                    s2+=aux[l];
                if(s2==s)
                 {for(l=1;l<=6;++l)
                     g<<aux[l]<<" ";
                  g<<"\n";
                  return;}

            }
        }
    g<<"-1\n";
    return;

}




int main()
{
    citire();
    generare();
    parc();


    return 0;
}