Cod sursa(job #1699018)

Utilizator Belu99Bibo Bela Belu99 Data 5 mai 2016 21:17:55
Problema Fractal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 5.57 kb
#include <iostream>
#include <fstream>
using namespace std;
int x,y,s=0,k;
ofstream g("fractal.out");
void fract(int k,int ori)
{
    if(k==0)
        g<<s;
    else
        {
            int i,a=1;
            if(k==1)
            {
                if(ori==2)
                {
                    if(x<=a and y<=a)
                        {
                            s=s+2;
                            fract(k-1,2);
                        }
                    else
                        if(x<=a and y>a)
                        {
                            s=s+3;
                            fract(k-1,2);
                        }
                        else
                            if(x>a and y<=a)
                            {
                                s++;
                                fract(k-1,2);
                            }
                            else
                                fract(k-1,2);
                }
                else
                    if(ori==1)
                    {
                        if(x<=a and y<=a)
                            fract(k-1,2);
                        else
                        if(x>a and y<=a)
                        {
                            s=s+3;
                            fract(k-1,2);
                        }
                        else
                            if(x>a and y>a)
                            {
                                s=s+2;
                                fract(k-1,2);
                            }
                            else
                                {
                                    s++;
                                    fract(k-1,2);
                                }
                    }
                    else
                        if(ori==3)
                        {
                            if(x>a and y>a)
                            {
                                s=s+2;
                                fract(k-1,2);
                            }
                            else
                            if(x<=a and y>a)
                            {
                                s=s+3;
                                fract(k-1,2);
                            }
                            else
                                if(x<=a and y<=a)
                                    fract(k-1,2);
                                else
                                    {
                                        s++;
                                        fract(k-1,2);
                                    }
                        }
            }
            else
            {
            for(i=1;i<k;i++)
                a=a*2;
            if(ori==2)
            {
                if(x<=a and y<=a)
                    fract(k-1,1);
                else
                    if(x<=a and y>a)
                    {
                        s=s+(a*a-1)+1;
                        y=y-a;
                        fract(k-1,2);
                    }
                    else
                        if(x>a and y>a)
                        {
                            s=s+(a*a-1)*2+2;
                            x=x-a;
                            y=y-a;
                            fract(k-1,2);
                        }
                        else
                        {
                            s=s+(a*a-1)*3+3;
                            x=x-a;
                            fract(k-1,3);
                        }
            }
            else
                if(ori==1)
                {
                     if(x<=a and y<=a)
                        fract(k-1,1);
                    else
                        if(x>a and y<=a)
                        {
                            s=s+(a*a-1)+1;
                            x=x-a;
                            fract(k-1,3);
                        }
                        else
                            if(x>a and y>a)
                            {
                                s=s+(a*a-1)*2+2;
                                x=x-a;
                                y=y-a;
                                fract(k-1,2);
                            }
                            else
                            {
                                s=s+(a*a-1)*3+3;
                                y=y-a;
                                fract(k-1,2);
                            }
                }
                else
                {
                    if(x>a and y>a)
                        {
                            x=x-a;
                            y=y-a;
                            fract(k-1,2);
                        }
                    else
                        if(x<=a and y>a)
                        {
                            s=s+(a*a-1)+1;
                            y=y-a;
                            fract(k-1,2);
                        }
                        else
                            if(x<=a and y<=a)
                            {
                                s=s+(a*a-1)*2+2;
                                fract(k-1,1);
                            }
                            else
                            {
                                s=s+(a*a-1)*3+3;
                                x=x-a;
                                fract(k-1,3);
                            }
                }
        }
        }
}
int main()
{
    ifstream f("fractal.in");
    f>>k;
    f>>x;
    f>>y;
    fract(k,2);
    return 0;
}