Cod sursa(job #841370)

Utilizator grannyAlexandru Marian Alexandru granny Data 24 decembrie 2012 02:26:15
Problema Fractal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include "fstream"
#include "iostream"

using namespace std;

ifstream f("fractal.in");
ofstream g("fractal.out");

int fractal(int k,int x,int y){

int laturaCadran=k-1;
1<<laturaCadran;
	
	if (k==1)
			return 0;
	
	//Se afla in cadranul 1 apucam de coltul din dreapta sus si tragem spre coltul stanga jos
	
	if (x<=laturaCadran && y<=laturaCadran)
				return fractal(k-1,y,x); else
				
	//Se afla in cadranul 2, parcurgem cadranul 1 si scadem din y costul laturii, pentru a-l reduce la cadranul 1 
	
	if (x<=laturaCadran && y>laturaCadran)
				return laturaCadran*laturaCadran+fractal(k-1,x,y-laturaCadran); else
	
	//Se afla in cadranul 3, parcurgem cadranele 1 si 2 si scadem din x costul laturii, pentru a-l reduce la cadranul 1	
			
	if (x>laturaCadran && y>laturaCadran)
				return 2*laturaCadran*laturaCadran+fractal(k-1,x-laturaCadran,y); else
				
	//Se afla in cadranul 4, parcurgem cadranul 1,2 si 3 si pe urma apucam de coltul din stanga sus si tragem spre coltul din dreapta jos
	
	if (x>laturaCadran && y<=laturaCadran)
				return 3*laturaCadran*laturaCadran + fractal(k-1,laturaCadran-y+1,2*laturaCadran-x+1);
			
	
}

int main(){

int k,x,y;

f>>k>>x>>y;
g<<fractal(k,x,y);	

return 0;	
}