Cod sursa(job #413072)

Utilizator darkseekerBoaca Cosmin darkseeker Data 7 martie 2010 16:36:41
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
int k,st[7],n;
unsigned long int s,a[100];
unsigned long int x;
fstream f("loto.in",ios::in);
fstream g("loto.out",ios::out);
bool ok=0;
int init()
{
    st[k]=-1;
}
int succesor()
{
    if(st[k]!=-1)
    x=x-a[st[k]];
    st[k]++;
    if(st[k]<=n)
    return 1;
    else
    return 0;
}
int valid()
{
    x+=a[st[k]];
    if(x>s)
    return 0;
    else
    return 1;
}
int solutie()
{
    if(k==6&&x==s)
    {
                  return 1;
                  ok=1;
                  }
    else
    return 0;
}
void tipar()
{
     for(int i=1;i<=k;i++)
     g<<a[st[i]]<<" ";
     }
void back()
{
     bool as,ev;
     k=1;
     init();
     while(k>0&&ok==0)
     {
               do{
                    as=succesor();
                    if(as)
                    ev=valid();
                    }while(as&&!ev);
                    if(as)
                    if(solutie())
                    tipar();
                    else
                    {
                        k++;
                        init();
                        }
                        else
                        {k--;
                        x=x-a[st[k+1]];
                        }
                        }
                        if(ok==0)
                        g<<-1;
}
int main()
{
    int max=0;
    f>>n;
    f>>s;
    for(int i=0;i<=n-1;i++)
    {
            f>>a[i];
            if(a[i]>max)
            max=a[i];
            }
    if(max*6<n)
    g<<-1;
    else
    back();
    return 0;
}