Cod sursa(job #744052)

Utilizator anca1243Popescu Anca anca1243 Data 7 mai 2012 10:25:43
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in ("cartoane.in");
ofstream out("cartoane.out");
int l,h,a,b;
int tab[155][155];

void init ()
{
    for(int i=0;i<155;i++)
        for(int j=0;j<155;j++)
            tab[i][j]=-1;
}
int maxi2(int x,int y)
{
    if(x>y)
        return x;
    return y;
}
int maxi4(int u,int d,int t,int p)
{
    return maxi2(maxi2(u,d),maxi2(t,p));
}
int taie(int x, int y)
{
    if(tab[x][y]!=-1)
        return tab[x][y];
    int unu,doi,trei,patru;
    unu=doi=trei=patru=0;
    if((x>=a)&&(y>=b))
    {
        unu=1+taie(x-a,y)+taie(a,y-b);
        doi=1+taie(x,y-b)+taie(x-a,b);
    }
    if((x>=b)&&(y>=a))
    {
        trei=1+taie(x-b,y)+taie(b,y-a);
        patru=1+taie(x,y-a)+taie(x-b,a);
    }
    tab[x][y]=maxi4(unu,doi,trei,patru);
    return tab[x][y];
}
void afis ()
{
    out<<"\n----------------\n\n";
    for(int i=0;i<150;i++)
        out<<i<<"\t";
    out<<"\n";
    for(int i=0;i<150;i++)
        out<<"-\t";
    for(int i=0;i<150;i++)
    {
        for(int j=0;j<150;j++)
            out<<tab[i][j]<<"\t";
        out<<"\n";
    }
}
int main()
{
    in>>l>>h>>a>>b;
    init();
    out<<taie(l,h);
    //afis();
    return 0;
}