Advertisement
Anon2005

pav

Jan 30th, 2020
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream in("pav.in");
  4. ofstream out("pav.out");
  5. int n,x,y,cnt;
  6. int v[513][513];
  7. int cadran(int x,int y,int n,int m)
  8. {
  9.     if(x<=n&&y<=m)
  10.         return 1;
  11.     if(x<=n&&y>m)
  12.         return 2;
  13.     if(x>n&&y<=m)
  14.         return 3;
  15.     return 4;
  16. }
  17. void rez(int x1,int y1,int x2,int y2,int where,int xx,int yy)
  18. {
  19.     if(x1==x2&&y1==y2)
  20.         return;
  21.     cnt++;
  22.     int mijx=(x1+x2)/2,mijy=(y1+y2)/2;
  23.     v[mijx][mijy]+=cnt;
  24.     v[mijx+1][mijy]+=cnt;
  25.     v[mijx][mijy+1]+=cnt;
  26.     v[mijx+1][mijy+1]+=cnt;
  27.     int a1=4,a2=3,a3=2,a4=1;
  28.     int xx1,xx2,xx3,xx4,yy1,yy2,yy3,yy4;
  29.     xx1=xx2=mijx;
  30.     xx3=xx4=mijx+1;
  31.     yy1=yy3=mijy;
  32.     yy2=yy4=mijy+1;
  33.     if(where==1)
  34.     {
  35.         xx1=xx;
  36.         yy1=yy;
  37.         v[mijx][mijy]-=cnt;
  38.         a1=cadran(xx,yy,(x1+mijx)/2,(y1+mijy)/2);
  39.     }
  40.     else if(where==2)
  41.     {
  42.         xx2=xx;
  43.         yy2=yy;
  44.         v[mijx][mijy+1]-=cnt;
  45.         a2=cadran(xx,yy,(x1+mijx)/2,(mijy+1+y2)/2);
  46.     }
  47.     else if(where==3)
  48.     {
  49.         xx3=xx;
  50.         yy3=yy;
  51.         v[mijx+1][mijy]-=cnt;
  52.         a3=cadran(xx,yy,(mijx+1+x2)/2,(y1+mijy)/2);
  53.     }
  54.     if(where==4)
  55.     {
  56.         xx4=xx;
  57.         yy4=yy;
  58.         v[mijx+1][mijy+1]-=cnt;
  59.         a4=cadran(xx,yy,(mijx+1+x2)/2,(mijy+1+y2)/2);
  60.     }
  61.     rez(x1,y1,mijx,mijy,a1,xx1,yy1);
  62.     rez(x1,mijy+1,mijx,y2,a2,xx2,yy2);
  63.     rez(mijx+1,y1,x2,mijy,a3,xx3,yy3);
  64.     rez(mijx+1,mijy+1,x2,y2,a4,xx4,yy4);
  65. }
  66. int main()
  67. {
  68.     in>>n>>x>>y;
  69.     int c=cadran(x,y,(1<<(n-1)),(1<<(n-1)));
  70.     rez(1,1,(1<<n),(1<<n),c,x,y);
  71.     for(int i=1; i<=(1<<n); i++)
  72.     {
  73.         for(int j=1; j<=(1<<n); j++)
  74.             out<<v[i][j]<<" ";
  75.         out<<'\n';
  76.     }
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement