Advertisement
a53

pestelee

a53
Mar 8th, 2020
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. #include <fstream>
  2. #define N 502
  3. #define M 10007
  4. using namespace std;
  5. int m,n,a[N][N],x1,y1,x2,y2,c;
  6. long long int b[N][N];
  7. struct coada
  8. {
  9. int x,y;
  10. }C[N*N];
  11.  
  12. ofstream g("pestelee.out");
  13. void Lee()
  14. {
  15. int i,lim=1;
  16. C[lim].x=x1;
  17. C[lim].y=y1;
  18. a[C[lim].x][C[lim].y]=1;
  19. b[C[lim].x][C[lim].y]=1;
  20. for(i=1;i<=lim&&(C[i].x!=x2||C[i].y!=y2);++i)
  21. {
  22. if(a[C[i].x+1][C[i].y]==0)
  23. {
  24. C[++lim].x=C[i].x+1,C[lim].y=C[i].y;
  25. a[C[i].x+1][C[i].y]=a[C[i].x][C[i].y]+1;
  26. b[C[i].x+1][C[i].y]=b[C[i].x+2][C[i].y]+b[C[i].x+1][C[i].y+1]+b[C[i].x+1][C[i].y-1]+b[C[i].x][C[i].y];
  27. b[C[i].x+1][C[i].y]%=10007;
  28. }
  29. if(a[C[i].x][C[i].y+1]==0)
  30. {
  31. C[++lim].x=C[i].x,C[lim].y=C[i].y+1;
  32. a[C[i].x][C[i].y+1]=a[C[i].x][C[i].y]+1;
  33. b[C[i].x][C[i].y+1]=b[C[i].x+1][C[i].y+1]+b[C[i].x-1][C[i].y+1]+b[C[i].x][C[i].y]+b[C[i].x][C[i].y+2];
  34. b[C[i].x][C[i].y+1]%=10007;
  35. }
  36. if(a[C[i].x-1][C[i].y]==0)
  37. {
  38. C[++lim].x=C[i].x-1,C[lim].y=C[i].y;
  39. a[C[i].x-1][C[i].y]=a[C[i].x][C[i].y]+1;
  40. b[C[i].x-1][C[i].y]=b[C[i].x-2][C[i].y]+b[C[i].x][C[i].y]+b[C[i].x-1][C[i].y-1]+b[C[i].x-1][C[i].y+1];
  41. b[C[i].x-1][C[i].y]%=10007;
  42. }
  43. if(a[C[i].x][C[i].y-1]==0)
  44. {
  45. C[++lim].x=C[i].x,C[lim].y=C[i].y-1;
  46. a[C[i].x][C[i].y-1]=a[C[i].x][C[i].y]+1;
  47. b[C[i].x][C[i].y-1]=b[C[i].x+1][C[i].y-1]+b[C[i].x-1][C[i].y-1]+b[C[i].x][C[i].y-2]+b[C[i].x][C[i].y];
  48. b[C[i].x][C[i].y-1]%=10007;
  49. }
  50. }
  51. if(a[x2][y2]==0)
  52. g<<'0';
  53. else
  54. if(c==1)
  55. g<<a[x2][y2];
  56. else
  57. g<<b[x2][y2]%M;
  58. return;
  59. }
  60.  
  61. int main()
  62. {
  63. ifstream f("pestelee.in");
  64. f>>m>>n;
  65. for(int i=1;i<=m;++i)
  66. {
  67. for(int j=1;j<=n;++j)
  68. {
  69. f>>a[i][j];
  70. if(a[i][j]==1)
  71. a[i][j]=-1;
  72. }
  73. }
  74. f>>x1>>y1>>x2>>y2>>c;
  75. for(int i=0;i<=m+1;++i)
  76. a[i][0]=a[i][n+1]=-1;
  77. for(int j=0;j<=n+1;++j)
  78. a[0][j]=a[m+1][j]=-1;
  79. Lee();
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement