Cod sursa(job #1834426)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 24 decembrie 2016 16:14:03
Problema Pavare2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;
long long n,a,b,k,i,j,s,u,x,y,sol[105];
struct vec
{
    long long a,n;
};
vec v[105],w[105],var[105];
int main()
{
    ifstream f("pavare2.in");
    ofstream g("pavare2.out");
    f>>n>>a>>b>>k;
    v[1].a=1;
    v[1].n=1;
    var[1].a=1;
    var[1].n=1;
    for(i=2; i<=n; i++)
    {
        w[1].n=v[a].a;
        for(j=2; j<=a; j++)
        {
            w[j].a=v[j-1].a;
            w[1].n+=v[j-1].a;
        }
        w[1].a=v[b].n;
        for(j=2; j<=b; j++)
        {
            w[j].n=v[j-1].n;
            w[1].a+=v[j-1].n;
        }
        for(j=1; j<=a; j++) {v[j].a=w[j].a; var[i].a+=v[j].a;}
        for(j=1; j<=b; j++) {v[j].n=w[j].n; var[i].n+=v[j].n;}
    }
    for(i=1; i<=a; i++) s+=v[i].a;
    for(i=1; i<=b; i++) s+=v[i].n;
    g<<s<<'\n';
    k--;
    for(i=1; i<=n; i++)
    {
        y=0;
        u++;
        for(j=0; i+j<=n&&j+u<=a; j++)
        {
            y+=var[n-i-j].n;
        }
        if(x+y<=k)
        {
            x+=y;
            sol[i]=1;
            u=0;
        }
    }
    for(i=1; i<=n; i++) g<<sol[i];
    g<<'\n';
    f.close(); g.close();
    return 0;
}