Cod sursa(job #3241878)

Utilizator divadddDavid Curca divaddd Data 5 septembrie 2024 14:59:32
Problema Fractal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;
int k,x,y;

ifstream fin("fractal.in");
ofstream fout("fractal.out");

int hilbert(int x, int y, int ord, int offset = 0){
  if(ord == 0){
    return offset;
  }
  int mid = 1<<(ord-1);
  int cadran = 0;
  if(x <= mid && y <= mid){
    cadran = 0;
    swap(x, y);
  }else if(x > mid && y <= mid){
    cadran = 1;
    x -= mid;
  }else if(x > mid && y > mid){
    cadran = 2;
    x -= mid;
    y -= mid;
  }else if(x <= mid && y > mid){
    cadran = 3;
    y -= mid;
    swap(x, y);
    x = (mid - x) + 1;
    y = (mid - y) + 1;
  }
  int area = (1<<(ord-1)) * (1<<(ord-1));
  return hilbert(x, y, ord-1, area * cadran + offset);
}

int main() {
  fin >> k >> y >> x;
  fout << hilbert(x, y, k);
  return 0;
}