Cod sursa(job #487087)
Utilizator | Eugenie Daniel Posdarascu eudanip | Data | 23 septembrie 2010 19:01:31 |
---|---|---|---|
Problema | Fractal | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.63 kb |
#include<stdio.h>
int sol;
void recur(int k,int x,int y)
{
if(!k)
return ;
int l=(1<<(k-1));
if(x<=l && y<=l)
recur(k-1,y,x);
if(x>l && y<=l)
{
sol+=l*l;
recur(k-1,x-l,y);
}
if(x>l && y>l)
{
sol+=2*l*l;
recur(k-1,x-l,y-l);
}
if(x<=l && y>l)
{
sol+=3*l*l;
recur(k-1,2*l-y+1,l-x+1);
}
}
int main ()
{
int k,x,y;
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%d%d%d",&k,&x,&y);
recur(k,y,x);
printf("%d\n",sol);
return 0;
}