Cod sursa(job #2279217)

Utilizator FastDr1v3rMarut Florin Viorel FastDr1v3r Data 9 noiembrie 2018 10:10:59
Problema 1-sir Scor 0
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;

int s[257], N, S, as, ev, k, nr;

void init()
{
    s[k]=0;
}

int succesor()
{
    if(s[k]<N-1)
    {
        s[k]++;
        return 1;
    }
    return 0;
}

int valid()
{
    if(k>=2)
        if(abs(s[k]-s[k-1])!=1)
           return 0;
    return 1;
}

int solutie()
{
    int S2=0;
    for(int i=1; i<=k; i++)
        S2=S2+s[i];

    if(S2==S && k==N)
        return 1;

    return 0;
}

void tipar()
{
    for(int i=1; i<=k; i++)
        cout << s[i];
    cout << endl;
}

int main()
{
    ifstream f("1-sir.in");
    ofstream g("1-sir.out");
    f >> N >> S;
    k=2;
    while(k>1)
    {
        do
        {
            as = succesor();
            if(as)
                ev = valid();
        } while(!((as && ev) || !(as)));

        if(as)
        {
            if(solutie())
             {
                nr++;
                //tipar();
             }
            else
            {
                k++;
                init();
            }
        }
        else
            k--;
    }
    g << nr;
    g.close();
}