Cod sursa(job #1125507)

Utilizator PhilipDumitruPhilip Dumitru PhilipDumitru Data 26 februarie 2014 18:02:12
Problema Fractal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>

using namespace std;

FILE * fin, * fout;
int power2[17];

int main()
{
    fin = fopen("fractal.in", "r");
    fout = fopen("fractal.out", "w");

    short k, i;
    power2[0] = 1;
    for (k = 1; k <= 16; ++k)
        power2[k] = power2[k-1] * 2;
    int x, y, temp;
    long z = 0;
    fscanf(fin, "%hd %d %d\n", &k, &y, &x);

    for (i = k - 1; i >= 0; --i)
    {
        if (x > power2[i])
        {
            if (y > power2[i])
            {
                z += 2 * power2[i]* power2[i];
                x -= power2[i];
                y -= power2[i];
            }//3
            else
            {
                z += power2[i]* power2[i];
                x -= power2[i];
            }//2s
        }
        else
        {
            if (y > power2[i])
            {
                z += 3 * power2[i]* power2[i];
                temp = power2[i] - x + 1;
                x = power2[i + 1] - y + 1;
                y = temp;
            }//4
            else
            {
                temp = x;
                x = y;
                y = temp;
            }//1
        }
    }
    fprintf(fout, "%d\n", z);

    fclose(fin);
    fclose(fout);
    return 0;
}