Cod sursa(job #255315)

Utilizator AstronothingIulia Comsa Astronothing Data 9 februarie 2009 01:02:32
Problema Fractal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <fstream>

using namespace std;

long long xcrt,ycrt,aux,pas;
long long theX,theY;
ofstream f2("fractal.out");

void incr(int k)
{
    switch(k)
    {
        case 1: ycrt+=1;break;
        case -1: ycrt-=1;break;
        case 3: xcrt+=1;break;
        case -3: xcrt-=1;break;
    }
}

void draw ( int k , int a,int b,int c,int d, int &gata)
{
    if(k==1)
    {
            incr(a);
            pas++;
            if(xcrt==theX && ycrt==theY) {f2<<pas;gata=1;}
            else
            {
                incr(b);
                pas++;
                if(xcrt==theX && ycrt==theY) {f2<<pas;gata=1;}
                else
                {
                    incr(c);
                    pas++;
                    if(xcrt==theX && ycrt==theY) {f2<<pas;gata=1;}
                    else
                    {
                        incr(d);
                        pas++;
                        if(xcrt==theX && ycrt==theY) {f2<<pas;gata=1;}
                    }
                }
            }

    }

    else
    {
        draw(k-1,b,a,-b,a,gata);
        if(!gata) draw(k-1,a,b,-a,b,gata);
        if(!gata) draw(k-1,a,b,-a,-a,gata);
        if(!gata) draw(k-1,-b,-a,b,0,gata);

    }
}

int main()
{
    ifstream f("fractal.in");

    int k;
    int ok=0;
    xcrt=1;
    ycrt=1;

    f>>k>>theX>>theY;

    if(theX==1 && theY==1) f2<<"0";


    else draw(k,1,3,-1,0,ok);

    f.close();
    f2.close();
    return 0;
}