fork download
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #define left 0
  4. #define up 1
  5. #define right 2
  6. #define down 3
  7.  
  8.  
  9. int main(void) {
  10. //scan data
  11. int n,way;
  12. scanf("%d%d",&n,&way);
  13. int number[49][49];
  14. int i,j;
  15. for(i=0;i<n;i++)
  16. for(j=0;j<n;j++)
  17. scanf("%d",&number[i][j]);
  18.  
  19. //process data;
  20. int x,y;
  21. x=y=n/2;
  22. printf("%d",number[y][x]);
  23. bool change=0;
  24. int count=0,add=1,goal=0;
  25. for(i=0;i<n*n-1;i++){ //0(+1),1(+2),3(+2),5(+3),8(+3),11(+4),15(+4),19(+5),24(+5),29(+6)...
  26. if(i==goal){
  27. change=1;
  28. if(count%2==0)
  29. goal+=add;
  30. else{
  31. add++;
  32. goal+=add;
  33. }
  34. count++;
  35. }
  36. switch(way){
  37. case left:
  38. printf("%d",number[y][--x]);
  39. if(change) way++;
  40. break;
  41. case up:
  42. printf("%d",number[--y][x]);
  43. if(change) way++;
  44. break;
  45. case right:
  46. printf("%d",number[y][++x]);
  47. if(change) way++;
  48. break;
  49. case down:
  50. printf("%d",number[++y][x]);
  51. if(change) way=0;
  52. break;
  53. }
  54. change=0;
  55. }
  56. return 0;
  57. }
  58.  
Success #stdin #stdout 0.01s 5320KB
stdin
3 
1
4 1 2
3 0 5
6 7 8
stdout
012587634