Cod sursa(job #1698993)

Utilizator Belu99Bibo Bela Belu99 Data 5 mai 2016 20:05:40
Problema Fractal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.96 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;
            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;
                                x=x-a;
                                fract(k-1,2);
                            }
                }
                else
                {
                    if(x>a and 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;
}