Cod sursa(job #2035377)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 9 octombrie 2017 11:52:16
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int fractal(int n, int i ,int j){
    int sol;
    if(n==1){
        if(i==1){
            if(j==1)
                sol=0;
            else
                sol=3;
        }else{
            if(j==1)
                sol=1;
            else
                sol=2;
        }
    }else{
        int putere=1<<n;
        int block=1,counter=0;
        for(int x=1;x<n;x++)
            block*=4;
        if(i<=putere/2){
            if(j<=putere/2){
                int aux=i;
                i=j;
                j=aux;
            }else{
                counter=3;
                j-=putere/2;
                i=putere/2-i+1;
                j=putere/2-j+1;
                int aux=i;
                i=j;
                j=aux;
            }
        }else{
            counter=1;
            i-=putere/2;
            if(j>putere/2){
                j-=putere/2;
                counter++;
            }
        }
        sol=counter*block+fractal(n-1,i,j);
    }
    return sol;
}

int main()
{
    FILE *fin, *fout;
    int n,i,j;
    fin=fopen("fractal.in","r");
    fout=fopen("fractal.out","w");
    fscanf(fin,"%d%d%d",&n,&j,&i);
    fprintf(fout,"%d",fractal(n,i,j));
    fclose(fin);
    fclose(fout);
    return 0;
}