Pagini recente » Rating Dumitriu Rares (rares89_) | Cod sursa (job #3289745) | Cod sursa (job #3251645) | Profil vasileailoaei | Cod sursa (job #3227025)
#include <fstream>
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int k, x, y;
// 1 4
// 2 3
long long sol = 0;
void drum(int n, int x, int y){
if(n == 0){
sol += 0ll;
return;
}
//vedem in ce cadran ne aflam
//cadranul 1
int l = (1 << (n - 1));
if(x <= l && y <= l){
g << "1 " << sol << '\n';
drum(n - 1, y, x);
return;
}
//cadran 2
if(x >= (l + 1) && y <= l){
sol += l* l * 1ll;
g << "2 " << sol << '\n';
drum(n - 1, x - l, y);
return;
}
//cadranul 3
if(x >= (l + 1) && y >= (l + 1)){
sol += 2 * l * l * 1ll;
g << "3 " << sol << '\n';
drum(n - 1, x - l, y - l);
return;
}
//cadranul 4
if(x <= l && y >= (l + 1)){
sol += 3 * l * l * 1ll;
g << "4 " << sol << '\n';
drum(n - 1, 2 * l - y + 1, l - x + 1);
return;
}
}
int main(){
ios::sync_with_stdio(0);
f.tie(0);
f >> k >> y >> x;
drum(k, x, y);
g << sol << '\n';
}