Cod sursa(job #2143331)

Utilizator alicesuiuAlice Suiu alicesuiu Data 25 februarie 2018 20:35:04
Problema Fractal Scor 100
Compilator java Status done
Runda Arhiva de probleme Marime 1.15 kb
//package Fractal;

import java.io.*;
import java.util.*;

public class Main {
	private static final String INPUT_FILE_PATH = "fractal.in";
	private static final String OUTPUT_FILE_PATH = "fractal.out";
	
	public static int fractal(int x, int y, int k) {
		if (k == 1) {
			if (x == 1 && y == 1)
				return 0;
			else if (x == 1 && y == 2)
				return 1;
			else if (x == 2 && y == 2)
				return 2;
			else
				return 3;
		} else {
			int l = (int) Math.pow(2, k);
			int halfL = l / 2;
			if (x <= halfL && y <= halfL)
				return fractal(y, x, k - 1);
			else if (x <= halfL && y > halfL)
				return 1 * halfL * halfL + fractal(x, y - halfL, k - 1);
			else if (x > halfL && y > halfL)
				return 2 * halfL * halfL + fractal(x - halfL, y - halfL, k - 1);
			else
				return 3 * halfL * halfL + fractal(halfL - y + 1, l - x + 1, k - 1);
		}
	}
	
	public static void main(String args[]) throws IOException {
		Scanner in = new Scanner(new FileReader(INPUT_FILE_PATH));
		PrintWriter out = new PrintWriter(OUTPUT_FILE_PATH);
		int k = in.nextInt();
		int x = in.nextInt();
		int y = in.nextInt();
		out.println(fractal(x, y, k));
		out.flush();
		in.close();
		out.close();
	}
}